{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Think Bayes: Chapter 9\n",
    "\n",
    "This notebook presents code and exercises from Think Bayes, second edition.\n",
    "\n",
    "Copyright 2016 Allen B. Downey\n",
    "\n",
    "MIT License: https://opensource.org/licenses/MIT"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "from __future__ import print_function, division\n",
    "\n",
    "% matplotlib inline\n",
    "import warnings\n",
    "warnings.filterwarnings('ignore')\n",
    "\n",
    "import math\n",
    "import numpy as np\n",
    "\n",
    "from thinkbayes2 import Pmf, Cdf, Suite, Joint\n",
    "import thinkplot"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Improving Reading Ability\n",
    "\n",
    "From DASL(http://lib.stat.cmu.edu/DASL/Stories/ImprovingReadingAbility.html)\n",
    "\n",
    "> An educator conducted an experiment to test whether new directed reading activities in the classroom will help elementary school pupils improve some aspects of their reading ability. She arranged for a third grade class of 21 students to follow these activities for an 8-week period. A control classroom of 23 third graders followed the same curriculum without the activities. At the end of the 8 weeks, all students took a Degree of Reading Power (DRP) test, which measures the aspects of reading ability that the treatment is designed to improve.\n",
    "\n",
    "> Summary statistics on the two groups of children show that the average score of the treatment class was almost ten points higher than the average of the control class. A two-sample t-test is appropriate for testing whether this difference is statistically significant. The t-statistic is 2.31, which is significant at the .05 level.\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "I'll use Pandas to load the data into a DataFrame."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Treatment</th>\n",
       "      <th>Response</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Treated</td>\n",
       "      <td>24</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Treated</td>\n",
       "      <td>43</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Treated</td>\n",
       "      <td>58</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Treated</td>\n",
       "      <td>71</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Treated</td>\n",
       "      <td>43</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  Treatment  Response\n",
       "0   Treated        24\n",
       "1   Treated        43\n",
       "2   Treated        58\n",
       "3   Treated        71\n",
       "4   Treated        43"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "\n",
    "df = pd.read_csv('drp_scores.csv', skiprows=21, delimiter='\\t')\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And use `groupby` to compute the means for the two groups."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Control 41.5217391304\n",
      "Treated 51.4761904762\n"
     ]
    }
   ],
   "source": [
    "grouped = df.groupby('Treatment')\n",
    "for name, group in grouped:\n",
    "    print(name, group.Response.mean())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The `Normal` class provides a `Likelihood` function that computes the likelihood of a sample from a normal distribution."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from scipy.stats import norm\n",
    "from thinkbayes2 import EvalNormalPdf\n",
    "\n",
    "class Normal(Suite, Joint):\n",
    "    \n",
    "    def Likelihood(self, data, hypo):\n",
    "        \"\"\"\n",
    "        \n",
    "        data: sequence of test scores\n",
    "        hypo: mu, sigma\n",
    "        \"\"\"\n",
    "        mu, sigma = hypo\n",
    "        likes = EvalNormalPdf(data, mu, sigma)\n",
    "        return np.prod(likes)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The prior distributions for `mu` and `sigma` are uniform."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "mus = np.linspace(20, 80, 101)\n",
    "sigmas = np.linspace(5, 30, 101)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "I use `itertools.product` to enumerate all pairs of `mu` and `sigma`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.791883192150766e-44"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from itertools import product\n",
    "\n",
    "control = Normal(product(mus, sigmas))\n",
    "data = df[df.Treatment=='Control'].Response\n",
    "control.Update(data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "After the update, we can plot the probability of each `mu`-`sigma` pair as a contour plot."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nYRiGAfz/AmkIxA6PnGsAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe917b1a850>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "thinkplot.Contour(control, pcolor=True)\n",
    "thinkplot.Config(xlabel='mu', ylabel='sigma')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And then we can extract the marginal distribution of `mu`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nKGGIiEhK/j8DnQq9JLiYIgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe91529d510>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pmf_mu0 = control.Marginal(0)\n",
    "thinkplot.Pdf(pmf_mu0)\n",
    "thinkplot.Config(xlabel='mu', ylabel='Pmf')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And the marginal distribution of `sigma`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\neu3/A7kdwZzU6mH4AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe9151f85d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pmf_sigma0 = control.Marginal(1)\n",
    "thinkplot.Pdf(pmf_sigma0)\n",
    "thinkplot.Config(xlabel='sigma', ylabel='Pmf')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Exercise:** Run this analysis again for the control group.  What is the distribution of the difference between the groups?  What is the probability that the average \"reading power\" for the treatment group is higher?  What is the probability that the variance of the treatment group is higher?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4.5285690956159087e-37"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Solution\n",
    "\n",
    "treated = Normal(product(mus, sigmas))\n",
    "data = df[df.Treatment=='Treated'].Response\n",
    "treated.Update(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe915072150>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Solution\n",
    "\n",
    "# Here's the posterior joint distribution for the treated group\n",
    "\n",
    "thinkplot.Contour(treated, pcolor=True)\n",
    "thinkplot.Config(xlabel='mu', ylabel='Pmf')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe915132890>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Solution\n",
    "\n",
    "# The marginal distribution of mu\n",
    "\n",
    "pmf_mu1 = treated.Marginal(0)\n",
    "thinkplot.Pdf(pmf_mu1)\n",
    "thinkplot.Config(xlabel='mu', ylabel='Pmf')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe9151c8390>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Solution\n",
    "\n",
    "# The marginal distribution of sigma\n",
    "\n",
    "pmf_sigma1 = treated.Marginal(1)\n",
    "thinkplot.Pdf(pmf_sigma1)\n",
    "thinkplot.Config(xlabel='sigma', ylabel='Pmf')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(9.9544130889408731, 9.0)"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Solution\n",
    "\n",
    "# Now we can compute the distribution of the difference between groups\n",
    "\n",
    "pmf_diff = pmf_mu1 - pmf_mu0\n",
    "pmf_diff.Mean(), pmf_diff.MAP()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.019520974812674143"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\npl7/jddO0dFHHBKgIqDtigp3M5ss6TZlVvr3ufv3Gxhzu6TzJO2UdLm7Ly4cA5STNes3678eekrr\nNm6pd1/l1R/V6MMHB6gKKI1mt2XMLCXpDkmTJI2RNNXMRheMOU/SEe5+pKSrJN3VDrWWvaqqqtAl\ntKsY5leza4/m/mWFLv7KXfrnW2fkBfsb61eqX++e+u6XL9Rxo4bIzAJWWloxPHdNiX1+rVHMyn2s\npFXuvlaSzGy6pCmSlueMmSLpQUly97+YWV8zO9jdXy91weWsqqpK6XQ6dBntJinz21O7V9t27NLO\nmt16tfpNvbCyWpve3Kalr2xo8uv6prbovhs/3UFVdqykPHetFfv8WqOYcB8iaV1Oe70ygd/UmOps\nX71wv+nuJwq7ytay1Rt06JCB6tH9vU+4d3neGPf32k8vXKkb7/pdwf0Njy28ryFNfa8Gx3thu/jx\n9b9X/fHPzF+uPbf9psHHLnlt9b7ec26/17/pzW16Z9ceHdi/t2p279GOd3Y3+bgNOeaIQ/S1Kz6s\n2364scVfC5SrDn9D9bmlazv6W7ZJc6u9XBve2KZFy9Y1PzChNm/ZoRVryjMA39iyvcVf8+kp43XO\n+NFcvhdRsuZWUGY2TlKlu0/Otv9Fkue+qWpmd0ma6+6/yLaXSzqjcFvGzJpZqwIAGuLuLXoTqJiV\n+wJJI81shKQNki6RNLVgzExJV0v6RfaXwdsN7be3tDgAQOs0G+7uvs/MrpE0R+8dCrnMzK7K3O3T\n3P1xMzvfzF5W5lDIK9q3bABAU5rdlgEAJE+HXX7AzL5sZsvM7EUzuyWn/5tmtip737kdVU97MLOv\nmdl+MxuQ05fo+ZnZf2RrX2xmD5tZn5z7Ej23d5nZZDNbbmYrzey60PW0lZkNNbM/mNmS7M/btdn+\n/mY2x8xWmNlsM+sbutbWMrOUmf3VzGZm2zHNra+Z/Sr7c7XEzE5t1fzcvd3/SUors63TJdselP3v\n0ZIWKbM9dKikl5X9ayJp/yQNlTRL0hpJA2KZn6RzJKWyt2+RdHP29jFJn1t2Hqls7SMkdZW0WNLo\n0HW1cU6DJZ2YvX2ApBWSRkv6vqRvZPuvk3RL6FrbMMd/lPS/kmZm2zHN7SeSrsje7iKpb2vm11Er\n9y9mi9krSe6+Ods/RdJ0d9/r7q9KWqX6x9AnxX9K+npBX+Ln5+6/d/d3P2tuvjK/xCTpQiV8bll1\nJ+m5e62kd0/SSyx33+jZy3+4+w5Jy5R53qZI+p/ssP+RdFGYCtvGzIZKOl/SvTndscytj6TT3P0B\nScr+fG1VK+bXUeE+StLpZjbfzOaa2cnZ/sZOfkoUM7tQ0jp3f7Hgrijml+NKSY9nb8cyt4ZO0kvi\nPBpkZodKOlGZX8x1Z427+0ZJB4WrrE3eXUjlvmEYy9wOk7TZzB7IbjtNM7OeasX8SnYSk5k9Keng\n3C5l/uf/a/b79Hf3cWb2QUm/kpSoj7ZpZn7XS/pwiLpKoYm5fcvdH8uO+ZakWnf/eYAS0QpmdoCk\nGZK+4u47GjjPJHFHU5jZRyS97u6LzSzdxNDEzS2ri6STJF3t7gvN7D8l/YsaOGm7mAcqCXdvNNzM\n7B8kPZIdt8DM9pnZQGVWe8Nzhg7N9pWdxuZnZscqs+f8vGWuNDVU0l/NbKwSMr+mnjtJMrPLlfkz\n+Kyc7mpJw3LaZTm3IiTiOWopM+uiTLA/5O6PZrtff/eaT2Y2WNKmcBW22gRJF5rZ+ZJ6SOptZg9J\n2hjB3KTMX47r3H1htv2wMuHe4ueuo7ZlfqNsMJjZKEnd3P1NZU5++qSZdTOzwySNlPRsB9VUEu7+\nkrsPdvfD3f0wZZ6cD7j7JkUwv+zlnr8u6UJ3z71wy0xJlyR5bll1J+mZWTdlTtKbGbimUrhf0lJ3\n/6+cvpmSLs/e/oykRwu/qNy5+/XuPtzdD1fmufqDu18m6TElfG6SlN16WZfNSUk6W9ISteK566hr\nyzwg6X4ze1HSbkmfliR3X2pmv5S0VFKtpC959u3gBHNltjVimd+PJHWT9GT2Erjz3f1LkcxN3shJ\neoHLahMzmyDpUkkvmtkiZV6T1ytzxMUvzexKSWslfSJclSV3i+KZ27WSfmpmXSWtVuak0Aq1cH6c\nxAQAEeIzVAEgQoQ7AESIcAeACBHuABAhwh0AIkS4A0CECHcAiBDhDgAR+n/zUoTm3o4PXAAAAABJ\nRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe915132e90>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Solution\n",
    "\n",
    "# And CDF_diff(0), which is the probability that the difference is <= 0\n",
    "\n",
    "pmf_diff = pmf_mu1 - pmf_mu0\n",
    "cdf_diff = pmf_diff.MakeCdf()\n",
    "thinkplot.Cdf(cdf_diff)\n",
    "cdf_diff[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.98047902518732777"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Solution\n",
    "\n",
    "# Or we could directly compute the probability that mu is\n",
    "# greater than mu2\n",
    "\n",
    "pmf_mu1.ProbGreater(pmf_mu0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.02688748111057556"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Solution\n",
    "\n",
    "# Finally, here's the probability that the standard deviation\n",
    "# in the treatment group is higher.\n",
    "\n",
    "pmf_sigma1.ProbGreater(pmf_sigma0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# It looks like there is a high probability that the mean of\n",
    "# the treatment group is higher, and the most likely size of\n",
    "# the effect is 9-10 points.\n",
    "\n",
    "# It looks like the variance of the treated group is substantially\n",
    "# smaller, which suggests that the treatment might be helping\n",
    "# low scorers more than high scorers."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Paintball"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Suppose you are playing paintball in an indoor arena 30 feet\n",
    "wide and 50 feet long.  You are standing near one of the 30 foot\n",
    "walls, and you suspect that one of your opponents has taken cover\n",
    "nearby.  Along the wall, you see several paint spatters, all the same\n",
    "color, that you think your opponent fired recently.\n",
    "\n",
    "The spatters are at 15, 16, 18, and 21 feet, measured from the\n",
    "lower-left corner of the room.  Based on these data, where do you\n",
    "think your opponent is hiding?\n",
    "\n",
    "Here's the Suite that does the update.  It uses `MakeLocationPmf`,\n",
    "defined below."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "class Paintball(Suite, Joint):\n",
    "    \"\"\"Represents hypotheses about the location of an opponent.\"\"\"\n",
    "\n",
    "    def __init__(self, alphas, betas, locations):\n",
    "        \"\"\"Makes a joint suite of parameters alpha and beta.\n",
    "\n",
    "        Enumerates all pairs of alpha and beta.\n",
    "        Stores locations for use in Likelihood.\n",
    "\n",
    "        alphas: possible values for alpha\n",
    "        betas: possible values for beta\n",
    "        locations: possible locations along the wall\n",
    "        \"\"\"\n",
    "        self.locations = locations\n",
    "        pairs = [(alpha, beta) \n",
    "                 for alpha in alphas \n",
    "                 for beta in betas]\n",
    "        Suite.__init__(self, pairs)\n",
    "\n",
    "    def Likelihood(self, data, hypo):\n",
    "        \"\"\"Computes the likelihood of the data under the hypothesis.\n",
    "\n",
    "        hypo: pair of alpha, beta\n",
    "        data: location of a hit\n",
    "\n",
    "        Returns: float likelihood\n",
    "        \"\"\"\n",
    "        alpha, beta = hypo\n",
    "        x = data\n",
    "        pmf = MakeLocationPmf(alpha, beta, self.locations)\n",
    "        like = pmf.Prob(x)\n",
    "        return like"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def MakeLocationPmf(alpha, beta, locations):\n",
    "    \"\"\"Computes the Pmf of the locations, given alpha and beta. \n",
    "\n",
    "    Given that the shooter is at coordinates (alpha, beta),\n",
    "    the probability of hitting any spot is inversely proportionate\n",
    "    to the strafe speed.\n",
    "\n",
    "    alpha: x position\n",
    "    beta: y position\n",
    "    locations: x locations where the pmf is evaluated\n",
    "\n",
    "    Returns: Pmf object\n",
    "    \"\"\"\n",
    "    pmf = Pmf()\n",
    "    for x in locations:\n",
    "        prob = 1.0 / StrafingSpeed(alpha, beta, x)\n",
    "        pmf.Set(x, prob)\n",
    "    pmf.Normalize()\n",
    "    return pmf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def StrafingSpeed(alpha, beta, x):\n",
    "    \"\"\"Computes strafing speed, given location of shooter and impact.\n",
    "\n",
    "    alpha: x location of shooter\n",
    "    beta: y location of shooter\n",
    "    x: location of impact\n",
    "\n",
    "    Returns: derivative of x with respect to theta\n",
    "    \"\"\"\n",
    "    theta = math.atan2(x - alpha, beta)\n",
    "    speed = beta / math.cos(theta)**2\n",
    "    return speed"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "The prior probabilities for `alpha` and `beta` are uniform."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.903291595810899e-06"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "alphas = range(0, 31)\n",
    "betas = range(1, 51)\n",
    "locations = range(0, 31)\n",
    "\n",
    "suite = Paintball(alphas, betas, locations)\n",
    "suite.UpdateSet([15, 16, 18, 21])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "To visualize the joint posterior, I take slices for a few values of `beta` and plot the conditional distributions of `alpha`.  If the shooter is close to the wall, we can be somewhat confident of his position.  The farther away he is, the less certain we are."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZMAAAEPCAYAAACHuClZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXd4VFX6xz9nSjLpvSeE0JEq3UqAVQEFBBR7ZV3cFbuu\n7adiW8VeFnXty1oRRRBRQCEIKtJ7LwkppPc2mXJ+f9zJpBBCy2Qmyfk8zzxzz7nn3vtemNzvPe85\n532FlBKFQqFQKM4EnbsNUCgUCkXbR4mJQqFQKM4YJSYKhUKhOGOUmCgUCoXijFFiolAoFIozRomJ\nQqFQKM4Yl4uJEGKsEGKPEGKfEOKh47R5UwixXwixRQhxdr36VCHEViHEZiHEunr1TwohMoQQmxyf\nsa6+D4VCoVAcH4MrTy6E0AH/BsYAWcB6IcRCKeWeem3GAV2llN2FEMOBd4ARjt12IFlKWdTE6V+V\nUr7qSvsVCoVCcXK4umcyDNgvpUyTUlqAL4FJjdpMAuYCSCn/BIKEEFGOfaIZG4UL7FUoFArFaeBq\nMYkD0uuVMxx1zbXJrNdGAsuFEOuFELc1Om6mwy32gRAiqCWNVigUCsWp4ekD8OdJKQcB44E7hBDn\nO+rfBrpIKQcC2YBydykUCoUbcemYCVovo1O9cryjrnGbhKbaSCmPOr7zhBAL0Nxma6SUefXavw98\n39TFhRAq8JhCoVCcBlLKUxpKcHXPZD3QTQiRKITwAq4GFjVqswi4EUAIMQIollLmCCF8hRD+jno/\n4GJgh6McXe/4KbX1TSGlbLefJ5980u02qPtT96bur/19TgeX9kyklDYhxExgGZpwfSil3C2EmKHt\nlu9JKZcIIcYLIQ4AFcAtjsOjgAWO3oUB+ExKucyx70UhxEC02V6pwAxX3odCoVAomsfVbi6klD8B\nPRvV/adReWYTxx0GBh7nnDe2pI0KhUKhODM8fQBe0QzJycnuNsGltOf7a8/3Bur+OiLidP1jbQEh\nhGzP96dQKBSuQAiBPMUBeJe7uRQKRcelc+fOpKWludsMxXFITEwkNTW1Rc6leiYKhcJlON5w3W2G\n4jgc7//ndHomasxEoVAoFGeMEhOFQqFQnDFKTBQKhUJxxigxUSgUHZakpCRWrFjhbjPaBUpMFAqF\n4jRwlxDNmTOHoUOHYjKZuPXWW4/Z/8svv9C7d2/8/f0ZM2YMR44caRW7lJgoPIqyimo27Exj4Yqt\n/LHlEMVlle42SaHwKOLi4nj88ceZPn36MfsKCgqYOnUqzz33HIWFhQwePJirrrqqVexS60wUbkNK\nSWZuMXsPZ7PnUA57D2eTmVt8TLuosEB6JkXRKymaXl2iSYgOQadT70GKlmHdunXceeedZGdnc/nl\nl/POO+/g5eUFwOLFi3n88cdJTU2lT58+vPPOO/Tr148bb7yRI0eOMGHCBPR6PU888QQPPPAA06ZN\nY/Xq1VRXVzNgwADefvttzjrrrBa19/LLLwdg/fr1ZGY2DML+7bff0rdvX6ZMmQLArFmzCA8PZ9++\nffTo0aNF7WiMEhNFq2GusXDgSB57Dmez91AOe1OzKa80n/C4nIJScgpK+XXDfgB8TF70SIykV5do\neiZF0yMxEh+Tl6vNV7iAqXe/26Ln++aN20/5mM8//5zly5fj6+vLZZddxrPPPsvTTz/N5s2bmT59\nOj/88AODBw/m008/ZeLEiezbt4+5c+eyevVqPvroI0aNGuU81/jx4/nkk08wGo089NBDXHfddWze\nvLnJ695xxx18/vnnzrUeQmjLOqSUJCYmsmXLllO+l507dzJgwABn2dfXl27durFz504lJoq2T0lZ\nFZ989ztrNh3Ebrc321av19ElPpzE2DAyc4o5cCQXi9XWoE1VdQ1b92awdW8GoOVvHtK3M9OnnkdE\naICrbkPRTrnzzjuJjY0F4LHHHuOuu+7i6aef5v333+f2229nyJAhANxwww0899xzrF27lgsuuADg\nmAV/N998s3P7iSee4PXXX6esrIyAgGN/l3PmzGHOnDktei/l5eVERkY2qAsMDKSsrKxFr9MUSkwU\nLkNKyW+bDvLBN2soq6huso2/rze9krQeRq8u0XTrFIGXse5nabXaOJSR7+jNZLPncM4x4ygSWL8j\nlW37Mrlp0gguPu8s51ueQnEi4uPjnduJiYlkZWUBkJaWxty5c3nrrbcA7fdssVic+xtjt9t59NFH\nmT9/Pvn5+QghEEKQn5/fpJi4An9/f0pLSxvUlZSUtMr1lZgoXEJRaSXvzfuVddtTG9THRQY7hCOK\nXl1iiI0IavbBbzDo6dE5ih6do2DUAKSU5BaWsedQNnsP57D70FGOHC0ENDfae1+v5vctB/n71clE\nhwe68hYVLcDpuKVamvT0dOd2Wlqas5eSkJDAY489xiOPPNLkcY1/t59//jnff/89K1asoFOnTpSU\nlBASEnLccDJ///vf+fTTT485j5SSzp07s3379lO+lz59+vDf//7XWa6oqODgwYP06dPnlM91qigx\nUbQoUkpWrd/HR9/+TkVV3XhIWLAft181kkFndWrm6BMjhCAqLJCosEBGDtV8wHsPZzPn8xTn4P2O\n/Vnc+8I8rp8wnPEX9lW9FEWzzJkzh0svvRQfHx/+9a9/cfXVVwNw2223MWXKFMaMGcOwYcOoqKhg\n1apVjBw5Ej8/P6Kiojh06BCjR48GoKysDG9vb0JCQqioqOCRRx5p9rf3zjvv8M4775yyvTabDYvF\ngs1mw2q1YjabMRgM6PV6Jk+ezD//+U8WLFjA+PHjeeqppxg4cKDLx0ugFaYGCyHGCiH2CCH2CSEe\nOk6bN4UQ+4UQW4QQZ9erTxVCbBVCbBZCrKtXHyKEWCaE2CuEWCqECHL1fShOTH5ROf9670fe+mxl\nAyG56NzevP7wVWcsJMejZ1I0L//zCiaPGUjtn26NxcpH3/7GY28sbHKGmEIB2svJtddey8UXX0y3\nbt3o3r07jz32GACDBw/m/fffZ+bMmYSGhtKjR48Gb/2PPPIIzzzzDKGhobz66qvcdNNNdOrUibi4\nOPr27cu5557rEpufffZZfH19mT17Np999hm+vr4899xzAISHh/PNN9/w6KOPEhoayoYNG/jyyy9d\nYkdjXBo1WAihA/YBY4AstJzwV0sp99RrMw6YKaW8VAgxHHhDSjnCse8QMFhKWdTovLOBAinliw6B\nCpFSPtzE9VXU4FZASskva/fwyXd/UFVd46yPCAngjmuT6dcjrtVsOZCWy7+/SCHd4foCMBr0XHPp\nMCYk91NTilsZFTXYs2nJqMGuFpMRwJNSynGO8sNoud9n12vzLrBSSvmVo7wbSJZS5gghDgNDpJQF\njc67BxjpaBMNpEgpezVxfSUmLia3sIx3vljFtn0ZDerHX9iX6y4bjsnb2Oo2WSw25i/fxLfLNzeY\nPdatUyQzrxtFQnRIq9vUUVFi4tm0pRD0cUB6vXKGo665Npn12khguRBivRDitnptIqWUOQBSymyg\n4Vw4Rauw7Ldd3PP8vAZCEhMRxDN3TWL61PPdIiQARqOea8YP5cX7p9A5LtxZf+BILve/+DXfLN+k\nHnAKRQvj6QPw50kpjwohItBEZbeUck0T7Y77ZJg1a5ZzOzk5WeVubiHmL9vEFz84h7EQwIRRA7h6\n/BC8vdwjIo1Jig9n9n2T+W7FVub9tAGbzY7NZufzxesoLK7gr1ecrwbnFQogJSWFlJSUMzpHa7i5\nZkkpxzrKJ+PmcrqwGp3rSaBMSvlqI1dYtOP43k1cX7m5XMC3yzfz2eI/neX4qBDuuDZZm77roRw5\nWsi/P1vJwfQ8Z92lI/txy+RzlaC4EOXm8mzakptrPdBNCJEohPACrgYWNWqzCLgRnOJT7BAJXyGE\nv6PeD7gY2FHvmJsd2zcBC116FwonC1dsbSAk/XvE89KDUz1aSAA6xYTy/L2TOffsrs66H1ZtZ+7C\ntephp1C0AC51c0kpbUKImcAyNOH6UEq5WwgxQ9st35NSLhFCjBdCHAAqgFsch0cBC4QQ0mHnZ1LK\nZY59s4F5QohbgTRgmivvQ6GxOGUbcxf+4Sz36RbLw7dd0mDFuiej1+u454Yx2G121m47DMCilVvR\n6wTXTRiueigKxRngUjeXu1Furpbjx9U7+GB+3XBV7y4x/N/t4902yH4mWK02XvlkeYPV+VdcMphr\nxg91n1HtFOXm8mzakptL0Q5Y9tuuBkLSMymax2aMa5NCAlqIlvtvvoghfRKddfOXbmTeTxvcaJVC\n0bZRYqJoll/W7uY/8351lrsnRvJ/M8a3+ZDvBoOeB265mLN7JzjrvvpxA/OXbXKjVYrWRqXtbTmU\nmCiOy8o/9/LOF6uc5a4JETz+90vx9WnbQlKL0ajnn9MvoX+PuqixX/ywjgU/N51/QqGojzuEqKam\nhr/+9a907tyZoKAgBg0axE8//dSgjUrbq/Aoft2wjzmfr3Qu4EmKD+eJf1yGn4+3W+1qabyMBh75\n21j6do911n36/Z98v3KbG61SKJrGarXSqVMnVq9eTUlJCc888wzTpk1zCoY70/YqMVEcw5pNB3jz\nfyucQpIYG8aT/7gMf9/2JSS1eBkNPPq3cZzVNcZZ98l3v/PDqlMPAa5oe6xbt44+ffoQFhbG9OnT\nqampiy+3ePFizj77bEJCQjj//POdYeHrp+0NDAzk5ZdfBmDatGnExMQQEhJCcnIyu3btalFbfX19\neeKJJ0hI0Nyzl156KUlJSWzcuBFomLbXy8uLWbNmsXXrVvbt29eidjSFms2laMDvWw7y2ic/Y3f8\nuyXEhPL0zAkE+vu42TLXU2228My7P7DnULaz7rYrLmDsBa7PBdFeOdFsrr9+0LKTHj7465BTap+U\n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\n1J0RrpN5AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe914eb3810>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "locations = range(0, 31)\n",
    "alpha = 10\n",
    "betas = [10, 20, 40]\n",
    "thinkplot.PrePlot(num=len(betas))\n",
    "\n",
    "for beta in betas:\n",
    "    pmf = MakeLocationPmf(alpha, beta, locations)\n",
    "    pmf.label = 'beta = %d' % beta\n",
    "    thinkplot.Pdf(pmf)\n",
    "\n",
    "thinkplot.Config(xlabel='Distance',\n",
    "                ylabel='Prob')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "Here are the marginal posterior distributions for `alpha` and `beta`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "alpha CI (14, 21)\n",
      "beta CI (5, 31)\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAEPCAYAAABGP2P1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAG+RJREFUeJzt3XuUVeWZ5/HvrwwiRkGUiApyUZJ4SWyJSsiExFIzCOko\nJkRFZ9SoGF0tDk47XlDHVJLOSuzYy3ibKA1RbNtoa9LeIpfMQK0YJwoOeIuiMo6AXLRREaQTIfDM\nH2dXcaqoyzlVZ5/b/n3WquXZ++yz6z3bw3nqfZ53v68iAjMzsxYNlW6AmZlVFwcGMzNrw4HBzMza\ncGAwM7M2HBjMzKwNBwYzM2sj1cAgabakdyS92MUxt0p6Q9Lzko5Osz1mZta9tHsMdwMnd/akpInA\noRHxaeBi4M6U22NmZt1INTBExO+BD7o4ZBJwb3Lss8AASYPTbJOZmXWt0jWGIcDqvO01yT4zM6uQ\nSgcGMzOrMp+o8O9fAxyctz002bcLSZ7UycysByJCxRxfjsCg5KcjjwGXAg9KGgtsjIh3OjuRJ/zL\naWpqoqmpqdLNqAq+FjmTp9/JK888wRFjv8Gvbrmk0s2puCx9Lua/uJ7Hlq3l4207Onx+9kXHFX3O\nVAODpPuBRmA/SauA7wG7AxERMyPiSUlfl7QC2AKcn2Z7zMzqTVdBoadSDQwRcXYBx0xLsw1m9eLR\nhS/w4Nzn+Hjrtko3xapIqYMCVL7GYD3Q2NhY6SZUjSxdi+6CwqeGfoa+u/cpY4uqVz1+LrpLGQHM\nmnrsLvtmX1T87/KopBpUjx/6nsrSteiupzD0kCM5c+KuXwxZVI+fi+6CQt8+pfs6d4/BrAbVe4F5\nxIgRrFy5stLNqCkHDjmYO85bVZJzOTCYWdVZuXKlRyEWSSpqRGqXHBjMqoyLzFZprjGYVZnugoIL\nzJY2BwazKtNdUHCB2dLmVJJZFav3InO9mTNnDrNmzeKpp54q6bHl5sBgVgGuI9SvYorApSwYl5JT\nSWYVUEhQcC3BKsWBwawCCgkKriVUrxtvvJFRo0bRv39/Pve5z/HII490eFxDQwO33XYbhx56KPvv\nvz9XXXVVm+cjgiuvvJJ9992XQw89lHnz5rU+d88993DEEUfQv39/Ro0axcyZM1N9T/mcSjKrMNcR\nijd5eulWAe7J9R81ahRPP/00gwcP5qGHHuKcc85hxYoVHR77yCOPsHTpUjZv3sxJJ53EYYcdxgUX\nXADAs88+y/nnn897773HXXfdxYUXXsiaNbmVBwYPHsyTTz7JiBEjeOqpp5gwYQJjxozh6KOP7vmb\nLZB7DGZmRZo8eTKDB+dWIT799NMZNWoUixcv7vDYa665hgEDBjB06FAuv/xyfvnLX7Y+N2LECC64\n4AIkcd5557F+/XreffddACZOnMiIESMA+MpXvsL48ePLVqh2j8EsJS4w1697772Xm2++mbfeeguA\nLVu2sGHDBhoadv1be+jQoa2Phw8fztq1a1u3DzjggNbH/fr1IyL46KOP2H///Zk7dy4/+MEPeP31\n19mxYwd/+tOfOOqoo9J7U3kcGMxS4gJzeiqZflu1ahXf/e53WbRoEV/60pcAGD16dKdTeKxevZrD\nDz+89bUHHXRQt79j69atfPvb3+a+++5j0qRJNDQ08M1vfrNs04Q4lWSWEheY69OWLVtoaGhg0KBB\n7Nixg7vvvpuXX3650+N/+tOfsnHjRlavXs0tt9zClClTuv0dW7duZevWrQwaNIiGhgbmzp3LggUL\nSvk2uuQeg1kZuMBcPw4//HCuuOIKxo4dy2677ca5557LuHHjOj1+0qRJHHPMMWzatInzzz+/tfDc\nkZb7Gvbaay9uvfVWTj/9dLZu3copp5zCpEmTSv5eOm1HrcxgKClqpa1m0HbkjANDcSTVxeyqDQ0N\nrFixgkMOOST139XZNUv2F3UnnVNJZmbWhlNJZr3k0UfWmWqd8qI7DgxmveRpsq0z27dvr3QTesSp\nJLNe8jTZVm/cYzArIReZrR64x2BmZm24x2BWABeYLUvcYzArgKe3sCxxYDArgKe3sHwjR45k4cKF\nlW5GapxKMiuSC8zWUyNHjmT27NmceOKJlW5Kl9xjMDOzNhwYzMx6YPHixRx55JHst99+XHjhhWzd\nuhWAJ554gtGjRzNw4EDGjRvHSy+9BMC5557LqlWrOOWUU+jfvz833XQTAGeccQYHHnggAwcOpLGx\nkVdeeaVi76mFJ9EzSxQ68sippPR1N4ne1FnPlex3zZpafG1o5MiR7L333sybN48999yTb3zjG5x4\n4ol861vf4uSTT+Y3v/kNxxxzDPfddx833HADr7/+On369GHkyJH84he/4IQTTmg91z333MMZZ5xB\nnz59uPrqq1m0aBHLli0ruk2eRM8sBR55ZMW47LLLOOigg9hnn3247rrruP/++5k5cyaXXHIJxx57\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe914dfef50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "marginal_alpha = suite.Marginal(0, label='alpha')\n",
    "marginal_beta = suite.Marginal(1, label='beta')\n",
    "\n",
    "print('alpha CI', marginal_alpha.CredibleInterval(50))\n",
    "print('beta CI', marginal_beta.CredibleInterval(50))\n",
    "\n",
    "thinkplot.PrePlot(num=2)\n",
    "    \n",
    "thinkplot.Cdf(Cdf(marginal_alpha))\n",
    "thinkplot.Cdf(Cdf(marginal_beta))\n",
    "    \n",
    "thinkplot.Config(xlabel='Distance',\n",
    "                ylabel='Prob')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "To visualize the joint posterior, I take slices for a few values of `beta` and plot the conditional distributions of `alpha`.  If the shooter is close to the wall, we can be somewhat confident of his position.  The farther away he is, the less certain we are."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYwAAAEPCAYAAABRHfM8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd4m9XZ+PHv0bDlvWI7HvHIHs7eIRCHEEIGCaOFQIHC\nCzQUArRv+yurhQTaUvqWllFaRmlLyt5NSAghwxBGduxMx1mecby3LVvj/P6QLMsztmNZsn0+16VL\neh4dPbqd2Lp1tpBSoiiKoigXonF3AIqiKErfoBKGoiiK0ikqYSiKoiidohKGoiiK0ikqYSiKoiid\nohKGoiiK0ikuTxhCiKuEEOlCiAwhxEPtlHlBCHFSCJEqhJjkdP5BIcRh++0BV8eqKIqitM+lCUMI\noQH+CiwCxgE3CSFGtyizGBgmpRwBrAJetp8fB9wJTAMmAcuEEENdGa+iKIrSPlfXMGYAJ6WUWVJK\nE/AusKJFmRXAOgAp5W4gSAgRCYwBdksp66WUFuBr4DoXx6soiqK0w9UJIwbIcTrOtZ/rqEye/dwR\n4FIhRIgQwhdYAgxxYayKoihKB3TuDqA9Usp0IcQzwJdANXAQsLg3KkVRlIHL1QkjD4hzOo61n2tZ\nZkhbZaSU/wL+BSCE+B3NayIOQgi1IJaiKEoXSSlFV8q7uklqLzBcCBEvhPACVgLrW5RZD9wGIISY\nBZRLKQvsx+H2+zjgWuDt9t5IStkvb0888YTbY1A/n/r51M/X/27d4dIahpTSIoRYDWzBlpxel1Ie\nF0Kssj0tX5VSbhJCLBFCnAJqgDucLvGRECIUMAH3SikrXRmvoiiK0j6X92FIKTcDo1qce6XF8ep2\nXnuZC0NTFEVRukDN9PZwycnJ7g7BpdTP17epn29gEd1ty/IkQgjZH34ORVGU3iKEQHax09tjh9Uq\nitJ3JCQkkJWV5e4wlDbEx8eTmZnZI9dSNQxFUS6a/duqu8NQ2tDe/013ahiqD0NRFEXpFJUwFEVR\nlE5RCUNRFEXpFJUwFEXp1xITE9m+fbu7w+gXVMJQFEVph7uSzUsvvcT06dMxGAz8z//8T6vnt23b\nxpgxY/D392fBggVkZ2f3SlwqYSiKoniYmJgYfvOb33DnnXe2eq6kpITrr7+e3/3ud5SWljJ16lRu\nvPHGXolLJQxFUfq9PXv2MG7cOMLCwrjzzjtpaGhwPPfZZ58xefJkQkJCmDt3LocPHwbgtttuIzs7\nm6uvvprAwED+9Kc/AXDDDTcQFRVFSEgIycnJHDt2rMfjveaaa1i+fDmhoaGtnvv4449JSkriuuuu\nw8vLizVr1pCWlkZGRkaPx9GSmrinKIpLXf/gyz16vY+ev6fLr3n77bf58ssv8fX1ZdmyZfz2t7/l\nySef5ODBg9x5551s3LiRqVOn8uabb7J8+XIyMjJYt24dO3fu5J///Cfz5893XGvJkiX8+9//Rq/X\n89BDD/GjH/2IgwcPtvm+9913H2+//bZjLoQQtmkPUkri4+NJTU3t8s9y9OhRJk6c6Dj29fVl+PDh\nHD16lJEjR3b5el2hahiK0k9l55fy6vs7+cUfP+SDL/bTYDK7OyS3uf/++4mOjiY4OJjHHnuMd955\nB4DXXnuNe+65h2nTpiGE4NZbb8Xb25tdu3Y5Xtty0tvtt9+Or68ver2exx9/nLS0NKqqqtp835de\neomysjJKS0sd942Pu5MsAKqrqwkKCmp2LjAwsN0YepKqYShKP2K1Wtl7JItNXx/myMlzjvOZecXs\n2H2CO66bw/SkBPcF6CaxsbGOx/Hx8Zw7Z/u3ycrKYt26dbz44ouALTmYTCbH8y1ZrVYeffRRPvzw\nQ4qLixFCIISguLiYgIAA1/8ggL+/P5WVzXd6qKio6JX3VwlDUfqBqhojW78/zhffHKOorO1vmgUl\nlfzhtc1MHRvPHdfNISo8qM1yPa07TUg9LSenabPOrKwsoqOjARgyZAiPPfYYjzzySJuva2xCavT2\n22+zYcMGtm/fTlxcHBUVFYSEhLS7LMpPf/pT3nzzzVbXkVKSkJDg6C/pinHjxvHGG284jmtqajh9\n+jTjxo3r8rW6SjVJKUoflplXzEtvp3D34//hzQ27myULAcyakMjNy2bg5+PtOL//WBYPPv0eb3+2\nB2O9qfeDdoOXXnqJvLw8SktL+f3vf8/KlSsBuPvuu3n55ZfZs2cPYPvw3bRpEzU1NQBERkZy5swZ\nx3Wqqqrw9vYmJCSEmpoaHnnkkVbJwNnf//53qqqqqKysbHarqqrqMFlYLBaMRiMWiwWz2Ux9fT0W\niwWAa6+9lqNHj/LJJ59QX1/P2rVrmTRpksv7L6AXFh8UQlwFPEfTjnvPtFHmBWAxth33bpdSptrP\n/xy4E7ACh4E7pJQNbbxeLT6oDBgWi5Xdh8+y6asjHD+T3+p5f19vFs4ew6K54wgPtTVTVFbX8fbG\nPWz97jjOfylhwX7cfu0cZk8c2uEH34V48uKDQ4cOZdWqVaxbt478/HyuueYa/va3v2EwGADYsmUL\nv/71rzl16hQ+Pj7MnTuXf/7zn/j5+bF+/Xruv/9+qqqq+PWvf80999zDzTffzPbt2wkLC+Opp57i\nxz/+MSdPnmTo0KE9FvPatWtZu3Zts/+TJ554gscffxyA7du3c99995Gdnc3MmTP597//TVxcXJvX\n6snFB12aMIQQGiADWACcw7bH90opZbpTmcXAainlUiHETOB5KeUsIUQ08A0wWkrZIIR4D9gopVzX\nxvuohKEMCLV1Dax5aQOnc4paPZcQM4illyUxd+pwvPRttzafyirkHx99w8mswmbnx4+M4c7r5zJk\ncEi34vLkhDHQ9aWEMQt4Qkq52H78MLa9vJ9xKvMysENK+Z79+DiQDGiB74FJQBXwCbZksrWN91EJ\nQxkQnv/PNr7ed9JxrNFomDUxkaWXjWdUYmSnaglSSnbsPsF/Nuymsrqu2bWWzRvPDxdNxdfHq0tx\nqYThuXoyYbi60zsGyHE6zgVmXKBMHhAjpTwghHgWyAZqgS1tJQtFGSh27jvZLFksnz+Rq+dPIDTI\nr0vXEUJw+azRzJyYyLub9vL510eQ2EYArd+RxsHj2fzhf6/D4K3v4Z9A6es8dpSUECIYWAHEAxXA\nh0KIm6WUb7dVfs2aNY7HycnJai9epV8pKKnklQ92Oo7nTR/Jj6+ZfVHX9PPx5s7r53LF7DG89sE3\njv6QnPNl/PvT77jnxnkXdX3Fs6SkpJCSknJR1+iNJqk1Usqr7MedaZJKB+YBlwKLpJR328/fCsyU\nUq5u431Uk5TSb1ksVn7z4npOnD0PQGRYIM/+6gf4GLrWbNQRKSUbvzrMvz75znHukZ8sZtq4+E69\nXjVJea6+tOPeXmC4ECJeCOEFrATWtyizHrgNHAmmXEpZgK0papYQwiBsDbMLgOMujldRPM6HWw44\nkoVGCH5224IeTRZg+/BYOm88syYkOs797Z2UZn0ciuLShCGltACrgS3AUeBdKeVxIcQqIcRP7GU2\nAWeFEKeAV4B77ef3AB8CB4E0bMPKX3VlvIriadLPnOeDzfscxzcsnsbIhEiXvJcQglU3XkZQgA8A\nFVV1vPL+TlVzUBxcPg+jN6gmKaU/qqmr5xfPfOiYjDdmaBRP3n81Go1rGwb2Hc3i6Vc/dxw/cMvl\nzJve8aQw1STlufpSk5SiKN302gffOJKFr8GLB2+93OXJAmDauHgWzhnjOP7Hh99QXFbt8vdVPJ9K\nGIrigb7am8HO/U1DaO9ZOc8xa7s33H7NHCLDAgGoNTbw4lvb+2wNQm3R2nNUwlAUD3O+uJJXnYbQ\nJs8YxSWTh/VqDAZvPQ/ccjmN7RVHTp5j09dHejUGT+COZNPQ0MBdd91FQkICQUFBTJkyhc2bNzcr\no7ZoVRQFi8XK8//Z5lgUcPCgQO66/hK3xDJ66GCuWTDJcfyf9bvIOV/mllgGErPZTFxcHDt37qSi\nooKnnnqKG264wZEU1BatiqIA8P4X+8nILABsS3W4YghtV6xcMp346DAATGYLL7y5HbPZ4rZ4uqsv\nbdHq6+vL448/zpAhQwBYunQpiYmJ7N+/H1BbtCqKAhw/nc9HX+x3HK9cMo0R8a4ZQttZOp2WB29d\nwP/704dYLFbO5BTxwZYD3LRkeqevcdc/9l24UBf8465pXX5NX96itaCggIyMDJKSkgC1RauiDHg1\ndfU8/5/tjqXHxw6L4lqn5iB3io8O5UfLZjqOP95ygJNZBW6MqOv66hatZrOZW265hTvuuIMRI0YA\n7t2iVSUMRXEzKSWvvL/TMYTWz8ebB29d0CtDaDvr6uTxjB0WBYBVSl74z3bqG/rO5ksdbdH67LPP\nEhoaSmhoKCEhIeTm5na4RevDDz/M8OHDCQ4OJjEx0bFFa0+TUnLLLbfg7e3t2EIW1BatijKg7T+W\nzbcHTjmO71l5GYNC/N0YUWsajYbVP5rPz//wAfUNJs4VVfCf9bu56wdzL/ja7jQh9bS+uEXrnXfe\nSXFxMZs2bUKr1TrOqy1aFWWAklLy0ZYDjuPkGaOYM6l3h9B2VmRYIHdeP8dx/PnOI6SdyHVjRJ3X\n17Zoveeee0hPT2f9+vV4eTUf9ODOLVpVwlAUNzp2Ot8xKkqr1XDz0s53JrvD5TNHMz0pwXH817d2\nUFNX776AOkEIwc0338yVV17J8OHDGTFiBI899hgAU6dO5bXXXmP16tWEhoYycuTIZt/eH3nkEZ56\n6ilCQ0P585//zI9//GPi4uKIiYkhKSmJOXPmtPe23Zadnc2rr75KamoqkZGRBAQEEBgY6Oh3GTRo\nEB999BGPPvoooaGh7Nu3j3fffbfH42iLWktKUdzoqb9vJDXd1lyyYNZo7r0p2b0BdUJFVR0/+8P7\njpVsb1w8jRsXT++zM8H7O7WWlKL0A2dyihzJQkCzSXKeLCjAh9uWz3Icb9hxyI3RKL1JJQxFcZOP\ntzYNq5w1aRjREcFujKZrLps2gqhw29DOWmPDBUor/YVKGIriBnmF5exKPe04vn7hZDdG03VarYYf\nLprq7jCUXqYShqK4wadbUx2T9CaPGUJi7CC3xtMdc6cMd9QylIHB5QlDCHGVECJdCJEhhHionTIv\nCCFOCiFShRCT7OdGCiEOCiEO2O8rhBAPuDpeRXG14rJqvtrXtO7PtVf0rdpFI1XLGHhcmjCEEBrg\nr8AiYBxwkxBidIsyi4FhUsoRwCrgZQApZYaUcrKUcgowFagBPnFlvIrSGzbsOITFYgVgVOJgxwzq\nvmjulOFEq1rGgOHqGsYM4KSUMktKaQLeBVa0KLMCWAcgpdwNBAkhWq64dgVwWkqZg6L0YVU1Rr78\n/rjj+LqFkzuc+OXptFoNP1C1jAHD1QkjBnD+kM+1n+uoTF4bZW4E3unx6BSll238+rBjDaa4qFCm\njo1zc0QX79Kpw90dgtJLPH4tKSGEHlgOPNxRuTVr1jgeJycnk5yc7NK4FKWrjPUmNn3VtGvddVf0\n7dpFI09aJLEtiYmJvP7661x++eXuDsWtUlJSSElJuahruDph5AHOX6Fi7edalhnSQZnFwH4pZVFH\nb+ScMBTFE2357phjGY3IsEDm9PK2q0rXuTvZnDx5kgkTJvDDH/6QdevWOc5v27aN1atXk5OTw8yZ\nM/nXv/5FXFzHtdWWX6TXrl3b5Xhc/dVgLzBcCBEvhPACVgLrW5RZD9wGIISYBZRLKZ0X278J1Ryl\n9HEmk4X129Mcxysun4hW69nfzBX3W716NTNmzGh2rt9u0SqltACrgS3AUeBdKeVxIcQqIcRP7GU2\nAWeFEKeAV4B7G18vhPDF1uH9sSvjVBRX+2pfBmWVtQAEB/gyf+YoN0c0sPSlLVobvfvuu4SEhLBg\nwYJm5/v1Fq1Sys3AqBbnXmlxvLqd19YC4a6LTlFcz2q18um2pmVAliWPx0vv8d2HPeaxDek9er3f\nXT36woVa6GtbtFZWVvLEE0+wY8cOXnvttWbPqS1aFaUf+z7tLPlFFQD4GrxYdInrN7pRmutrW7Q+\n/vjj3H333Y6Nnpy5c4vWgfM1R1HcQErJx182fftcfGkSvj5eHbxCcYWOtmhdt26dYwtUKSUmk6nD\nLVofffRRPvzwQ4qLixFCOLZo7aktUlNTU9m6dWu7CUVt0aoo/dTB4zlk5tn2e9brtCydN97NEfW+\n7jQh9bS+tEXrV199RVZWFnFxcUgpqa6uxmKxcOzYMfbt26e2aFWU/uqTrU21i4VzxhAU4OPGaAau\nvrRF66pVqzh9+jSpqamkpaVxzz33sGzZMrZs2QKoLVoVpV9KP3OeY6fzAdvktuXzJ17gFYor9LUt\nWg0GAxEREY6bv78/BoOB0NBQQG3RetHUFq2KJ3r61c/ZdzQLgOQZo7j/R/Mv8Iq+q71tQBX3U1u0\nKoqHyzpX6kgWfWn7VUXpiEoYiuICG79q2ud6xoREhgwOcWM0itIzVMJQlB5WU1fPzv2nHMeq70Lp\nL1TCUJQe9vW+kzSYzIBtCfNRiS23d1GUvkklDEXpQVJKtnzbtLbQokvG9YslzBUFVMJQlB514mwB\n2fmlAHh76bls2gg3R6QoPUfN9FaUHvTFt0cdj+dOGTZglgGJj49XNSkPFR8f32PXUglDUXpIVY2R\n71KbZgUPpEUGMzMzL1jmrQ27+dg+831kQiRP//xaF0el9DTVJKUoPSRlTwZmswWAYUPCGRanVuZ3\ntviyJMemURmZBaSfOe/miJSuUglDUXqArbO7qTnqykvGujEazxQa5Me8aU3rHa3fkdZBacUTuTxh\nCCGuEkKkCyEyhBAPtVPmBSHESSFEqhBiktP5ICHEB0KI40KIo0KIma6OV1G648jJc5yz73nhY/Bi\n7pThbo7IM109f4Lj8Z5DZ8krLHdjNEpXuTRhCCE0wF+BRcA44CYhxOgWZRYDw6SUI4BVwMtOTz8P\nbJJSjgEmAsddGa+idNeW75qG0s6bNgKDt96N0XiuuKhQpoyNA0ACn6Uc6vgFikdxdQ1jBnBSSpkl\npTQB7wIrWpRZAawDkFLuBoKEEJFCiEDgUinlv+zPmaWUlSiKhymvqmX3obOOY9Uc1bEVlzfNfN+x\n+wQVVXVujEbpClcnjBggx+k4136uozJ59nOJQLEQ4l9CiANCiFeFEGozAcXjbN91AovFCsCoxMHE\nR4e5OSLPNm54NEOH2AYEmMwWPv/miJsjUjrLk4fV6oApwH1Syn1CiOeAh4En2iq8Zs0ax+Pk5GSS\nk5N7IURloJNS8uV3zjO7Ve3iQoQQrJg/kb+s2wrA5p1HuXbBJLy9VDOeK6WkpJCSknJR13B1wsgD\n4pyOY+3nWpYZ0k6ZHCnlPvvjD4E2O82hecJQlN6Smp5LYWkVAP6+3syeNNTNEfUNsycN5c0NARSV\nVVFVYyRlTwaL5g6ceSvu0PKL9Nq1a7t8DVc3Se0Fhgsh4oUQXsBKYH2LMuuB2wCEELOAcillgZSy\nAMgRQjSOw1sAHENRPIjzUNrk6aPw0ntypd1zaLUaliU37W++IeUQVqvVjREpneHShCGltACrgS3A\nUeBdKeVxIcQqIcRP7GU2AWeFEKeAV4B7nS7xAPCWECIV2yip37syXkXpipLyavYdyXIcXzlXNUd1\nxYJZo/E12JZOyS+qYM/hTPcGpFyQy78OSSk3A6NanHulxfHqdl6bBkx3XXSK0n3bdqVjtW99mTQi\nmpiIYDdH1Lf4GLxYdMlYPtmWCsD6HYeYNVE16XkyNdNbUbrBYrGy9fumaUEL56jaRXcsmTfesVzI\nibPn1XIhHk4lDEXphv3HsikprwEg0N+HWRMS3RxR3xQa5NdsCXi1XIhnUwlDUbrBubN7wcxR6HRa\nN0bTtzlvYbvn0FnOqeVCPJZKGIrSRYWlVaQeb5preoVqjroorZcLOezegJR2qYShKF209bvjSPvj\nSaOHMHhQoFvj6Q+caxnbd6er5UI8lEoYitIFZrOFrbuaOrvVulE9I2lENImxgwDbciGbvzl6gVco\n7qAShqJ0wZ4jmY5vvyGBvkwb13PbXw5kQgiuudyxswGf7zxCg8nsxoiUtqiEoShdsOXbpsUGFswe\n4xgSqly82ZOGMijEH7Btd7tj9wk3R6S0pH7bFaWT8grLOZxhW+ZMAAtnj3FvQP2MVqth2bymDZb+\nuz3NsQqw4hlUwlCUTtr6XVPfxbSkBMe3YaXnLJwzBj8fbwAKSir5Pu2MmyNSnKmEoSid0GAys313\nuuN44RxVu3AFg7eexZclOY4/2ZqKlLKDVyi9SSUMRemEXWlnqK6tByA8JIDJY4Zc4BVKdy29LAm9\nfSJkZl4xqem5bo5IaaQShqJ0whdOnd1XzBmDRqP+dFwl0N+nWQ3uk60H3RiN4kz91ivKBWTnlzoW\nxdNoNCyYNdrNEfV/y+dPdCTlo6fOkZFZ4OaIFFAJQ1EuyHkL1hnjEwgJ9HVjNANDeGhAs0UJP/5S\n1TI8gcsThhDiKiFEuhAiQwjR5harQogXhBAnhRCpQojJTuczhRBpQoiDQog9ro5VUVoy1ptI2ZPh\nOFZ7dveeaxY0TeTbeySTnPNlboxGARcnDCGEBvgrsAgYB9wkhBjdosxiYJiUcgSwCvi709NWIFlK\nOVlKOcOVsSpKW749eIpaYwMAUeFBjB8Z4+aIBo4hg0OYnpTgOP7UvtGS4j6urmHMAE5KKbOklCbg\nXWBFizIrgHUAUsrdQJAQItL+nOiFGBWlXV9809QctXDOWIQQboxm4LluoaPBga/3naSotMqN0Siu\n/jCOAXKcjnPt5zoqk+dURgJfCiH2CiHudlmUitKGMzlFnM4pAkCn0zJ/xkg3RzTwjEyIZOywKACs\nVisbUg65OaKBzdO/vV8ipZwCLAHuE0LMdXdAysCxxamze/bEoQT6+7gxmoHr2iuaahlffnecymq1\n9Lm76Fx8/Twgzuk41n6uZZkhbZWRUubb74uEEJ9ga+L6pq03WrNmjeNxcnIyycnJFxe5MqDV1jXw\n9b5TjmPV2e0+k8cMIT46jKxzJTSYzGzaeYSVi6e7O6w+JyUlhZSUlIu6hnDltHshhBY4ASwA8oE9\nwE1SyuNOZZYA90kplwohZgHPSSlnCSF8AY2UsloI4QdsAdZKKbe08T5SLR+g9KTNO4/y2oc7AVvn\n618evkH1X7jRN/tP8Zd1WwHw9/XmlTW3YPDWuzmqvk0IgZSyS7/ULm2SklJagNXYPuyPAu9KKY8L\nIVYJIX5iL7MJOCuEOAW8Atxrf3kk8I0Q4iCwC9jQVrJQlJ4mpeQLpz27r7xEdXa72+xJQ4kMs+1s\nWF1bz5dOC0EqvcfVTVJIKTcDo1qce6XF8eo2XncWmNTyvKK42smsQrLzSwHQ67TMm646u91Nq9Vw\nzYJJvPL+1wCs35HG4kvHobOvOaX0jk7VMIQQYUKIF4UQB4QQ+4UQzwshwlwdnKK4g/O6UZdOHeFY\nbltxr+QZIwkKsA08KK2o4et9J90c0cDT2Sapd4FC4HrgB0AR8J6rglIUd6mqMfLtAdXZ7Ym89Lpm\nGyx9svWgWvq8l3U2YURJKZ+SUp61336LrY9BUfqVlD0ZmMwWABJjBzEsLtzNESnOFs0di4/BC4Bz\nRRXsPnTWzRENLJ1NGFuEECuFEBr77QbgC1cGpii9TUrJFqfO7kWqs9vj+Pl4c5VTrU9tsNS7OkwY\nQogqIUQlcDfwNtBgv70L/MT14SlK7zl2Op9zRRWAbee3S6eOuMArFHdYmjzB0dl9KruQIyfPuTmi\ngaPDhCGlDJBSBtrvNVJKnf2mkVIG9laQitIbnDu7500bqcb5e6iQQF8un9k08FJtsNR7Oj0PQwix\nXAjxJ/ttmSuDUpTeVlFVx660M47jKy9Re3Z7suXzJ9LYWJh2Ipcz9jW/FNfq7LDaPwAPAsfstweF\nEE+7MjBF6U3bdqVjsVgB24J3CTGD3ByR55JSUm+2UG00U2+2uKUPISo8iDlThjuOP9pyoNdjGIg6\nO3FvCTBJSmkFEEK8ARwEHnFVYIrSW6SUbP2+aebwlXP6/1BaKSWVdWaKq+opqW6guKqe4up6Sqsb\naDBbMVkkJovVfpOYzFbM1qZ7Z1qNwKDX4OOlxUevtd3bbwa9Fl8vLQYvLUE+esIDvYkI8CbIV3/R\nAwquu2KSYwj0rkNnOZVVyPD4iIu6ptKxrsz0DgZK7Y+DXBCLorhF2olcCkoqAfA1eHHJlGFujqhn\nSCkpqKgnu6SW4ur6ZsmhtLoBk6VnagYWq6Sm3kJNvaXTr9FrhS15BBoID/AmPNCb8ABvIgK9CfP3\nQqe9cONHQswgZk8axveppwF467M9PHGfai13pc4mjKeBg0KIHdg2NboMeNhlUSlKL9ri1Nl9+czR\neOldvmKOS1QbzZwtquFMYbXtvqiG2i58iHeFXivQazU0WKyYu5F4TBbJuTIj58qMrZ4TAsIDvIkf\n5EvCID/iB/kSP8gPH6/Wy4DctHQ6u9POYJWSQxm5pJ3IZeKo2G79TMqFXfAvQ9jqjd8As4DGNYUf\nklKed2VgitIbSsqr2Xs403G8sI90dluskryyOs4UVnOmsIbThdUUVNR36Rp+3lrC/L0ZFODV7N7H\nS+tICHqtBp1W4KXToNMI9PZ75+Ykk8VKXYMFo8lCbb2FOpMFY4OFWvu5OvvjspoGiqrqKays7zCR\nSQmFlbZye8/Y9vEWAiKDDCTYk0hCuB9DQn2IiQhm/sxRbNuVDsBbG3YzYWSMmj/jIhdMGFJKKYTY\nJKUcD6zvhZgUpdds25WO1d5pO254NLGRIW6OqH2l1Q2kZZeTll1OxvlqGszWC77G36AjMdyPwUGG\nZokh1M8LX++eqUnptRr0PhoCfTo/DLmm3kxhZT1FVfUUVdpuhZVGiqrqKasxtSovJZwvN3K+3Miu\nU7aWcSEgOtiHiNAoarVZeFnqOZ1TxK60s8yeNLRHfjaluc7+xhwQQkyXUu51aTSK0ovMZkuz5ihP\n6+yWUpJTWkdadjmpWeVkFdd2WF6rEQwJ82FouD9DI/wYGuFHeIC3R37b9vPWkRhuS2YtNZit5JXV\nkVVcQ2aL1xvNAAAgAElEQVRRLVnFNeSV1dGirx0pIa+sjrwykKHRZJVUopcWnv7oII/4BTIuNqhL\nSUy5sE5toCSESAdGAJlADbZ+DCmlnNDR63qL2kBJ6Y6UPSd48a0dAAQH+PLyEz9Cr3fvctlmi5WM\n89WkZpWTml1OaXVDu2VD/PQMi2hMDv7EhfnipfP0XZe7p95sIbekjsziGjKLa8ksquF8hZHGP3uz\nxcLhjDws9qySEB3KoJAAokMMjI4KZHR0ACMHB+Bv6Jv9U67QnQ2UOvuvt6gb8SiKx5JS8t/taY7j\nJfOS3JYsTBYrqVnlHMgs40huJXUNbbfvazWCUVEBTIwLYmJcMIMCBs6y6946LcMi/RkW6e84Z2yw\nkFVSy6mCak7kV1FaVk12QTkA5worCA32c3Ssbz9WiBAwJNSXpNhAJsQFMzTcD43G82pfnqzDGoYQ\nwgDcAwwHDgOvSynNXXoDIa4CnsM2SfB1KeUzbZR5AViMrfZyu5Qy1ek5DbAPyJVSLm/nPVQNQ+mS\n1PQcnvr7RsC2bPara28hwM/QqzFkl9TybUYxu06VtDsk1ddLS1JsEJPig0mKDeyxfof+qKq2njuf\n+oCiOitG9ERERxIe2v4KRn7etn/bCUOCGBcbNOBqH66oYbwBmICd2D7Qx2Kb8d3ZgDTAX7Ht6X0O\n2CuE+K+UMt2pzGJgmJRyhBBiJvAythFZjRpnmKu1q5Qe899tTbWLK2aP7rVkUW00s/t0Cd9mlJBd\n0nafRJi/F5Pig5kUF8yIwf6dmpOgQICvN7cvnsjrH30LgG+pkXuvX05maR3p+VVkFtU06wepqbew\n+3Qpu0+XIgQMi/BnwpAgJsQFERPi45F9P+52oYQx1j46CiHE68CeLl5/BnBSSpllv8a7wAog3anM\nCmAdgJRytxAiSAgRKaUsEELEYptl/jvgf7v43orSpqxzJRzKyAVsnXFL57m2K85qlRw/V8k3GcUc\nzCxvNVMabEli9ogwpiWGqA+ri3DlnLGs336IorIqauvqOXHiDDctsc0GqGuwcCK/ikPZ5RzKqaC8\ntmk0lpRwqqCaUwXVfLwvjxA/PeOH2Gp2Y6ID0aukDVw4YTj+RaWU5m78EscAOU7HudiSSEdl8uzn\nCoC/AP8PNbNc6UHOfRezJg1j8CDXVF6Lqur5NqOYbzOK2xwqqtcKpiaGcMnIQYyOClBJogfodFpu\nWjqdF97cDsCGHYdYcmkSQQE++HhpbTW3+GDHCLTG5HG2qAbnVu2yGhNfpxfzdXoxBr2G8UOCmJwQ\nwvjYoDYnEA4UF0oYE+37YYDty5iP/bhxlJTLmomEEEuBAillqhAi2f6einJRisuq2bm/aQvW5fN7\ntnYhpSTjfDVfHikgLbuctrrWEsJ9mTtyEDOGhqo+CRe4dOpwPtmWSk5+KfUNJj768gD/c90lzcoI\nIYgL8yUuzJdlk6OprDNxNLeSQznlHM2tpNZp4IHRZGXvmTL2nilDpxGMiQlksj3xDLRhux3+tkop\nLzaV5gFxTsex9nMtywxpo8wPgOVCiCWADxAghFgnpbytrTdas2aN43FycjLJyckXGbrSH32+8whW\nq23C2+ihgxmZ0DM7DZstVvafLWPLkYI250v4G3TMHh7GJSPDiA317ZH3VNqm0Wi4eekMnvnHZgA2\nf3OUZckTiAgNaPc1gT56Zo8IY/aIMCxWyamCasf8l8LKphn0ZqvkcE4Fh3Mq+M+3WQyL8GdKQjCT\nE0II9/BRaykpKaSkpFzUNTo1D6PbFxdCC5zA1umdj60P5CYp5XGnMkuA+6SUS4UQs4DnpJSzWlxn\nHvALNUpKuRh1xgZ+8sSb1BptcxseuusqZoxPuKhr1tSb+Tq9iO3HCttsdkqKDeTSUeFMjAtSnde9\nSErJo899SkZmAQDJM0Zx/4/md+s6eWV1HMwq52BmebsDFQDiwnyZkhDMlIQQokN8uh17b3HlPIxu\nkVJahBCrgS00Das9LoRYZXtaviql3CSEWCKEOIVtWO0droxJGbi2fp/uSBZR4UFMT4rv9rUKK41s\nPVLItyeLqTc1X6JDrxXMHhHGFeMi+8QHR38khOCWq2fy+Iu21Yy+2nOCFZdPJC4qtMvXiQ31JTbU\nl6snR1NUVe+YM3OqoLpZk2N2SS3ZJbV8uv8cUcEGpiaGMDUhhNjQ/jOIwaU1jN6iahjKhVgsVu59\n6m2Ky6oBWHXDZVx5SdeWApFScrKgmi8PF5DaRv9EoI+Oy8dGMG9MOAGGgdW27al++/JGDh63jamZ\nMT6Bh+66qseuXVlnIi3bVvM4llfZ5ug3gIhAb6YkhDAlIZjEcD+PSR7dqWGohKEMCN/sP8Vf1m0F\nIMDPwKtrb+n0MuZSSo7lVbLhYD6nCqpbPR8b6sPCpEhmDAtVwy89zNncYn75fx86jp/++bU91m/l\nrK7BwuGcCvadLeVwTkW7e42E+nsx1Z48hkf6uzV5qIShKG2QUvKrZz927Pv8w6umsnLx9Au8yva6\nQzkVfHYwn7NFNa2eHz8kiCuTIhkdrYbEerI/v7HVsTPfuOHRrF19tUv/v+pNFo7kVrL/bBmHcsox\nmtpeVTjIV8/k+GCmJoQwMioAbS8vU+JxfRiK4gmOnc53JAu9TsviuUkdlpdScjCrnM8O5rfq5NRp\nbP0TC5NU/0RfsXLxNL4/eBqrlBw9dY60E7lMGj3kwi/sJm+91tZ/kRhCg9nK8bxK9meWkZpd3mwf\nkIpaEynHi0g5XoSft5bJ8SFMTghmbIznThRUCUPp95yXAUmeMZKggLY/6K1Wyb7MMjYezCevrK7Z\nczqt4LJR4Vw1YTCh/l4ujVfpWdERwSyYPZovv7MNznzj0+9J+mU0Op3rJ+B56TRMjA9mYnwwZouV\nE/lV7D9bxsGscqqMTcvy1dRb+CajmG8yivHx0jJhSBBTEkJIGhKIdy/E2VkqYSj9Ws75MvYfy3Ic\nXz1/YqsyFqtk75lSPkvN53x58y1D9VpB8pgIFo2PJNhPJYq+6oarppGyJwOT2UJ2finrdxzimism\nYbFKzFaJpfEmnR5bJVYJFimx2h9b7Y8t9sfS/rzFansssd1bpa2mKrHd245tz8dG+hMd7kd+hZHM\nohrOFtU0W3yyymxl64litp4oRqcVxIT4ED/Il9hQH7ztKyq3bEcS9jONLW1C2MoIIez39jLCNly1\nuy1yKmEo/dpnKYccj6cnJRATEew4tlolu0+XsuHguWaTswC89Rrmj4ngyvGRA242rztYrJIGs5UG\ni/1mtmKySNue4VaJydJ0bLLYjs32e5NVYrbYPvjNVqvTY4nZ/nqzVRIyYQJn80pBwGsHCvmu8gje\nXu7/v40a5Ettg4XyWhMVtabmOylaoKKgmmMF1QgB/t46An31BPno3dJspRKG0m+VV9WSsjfDcbz8\nclvtQkrJ/swy/rv/HPktahQ+XlouHxvBFUkRamhsByxWSb3ZitFsocFsxWi2fcgbTbYP/KZ7p+ft\niaDB4pQc7PeWC+82e9FCQgI5X1ZDrbEBKSWZ50oYlRCJ+1cdEvh66fD10hEdbKCuwUpFXQMVtaZm\nHeZSQpXRTJXRTB51+HppCfLVE+ijx6DX0Bs/h0oYSr/1+c6jmM22qv7wuAhGJ0aSll3Of/efa9WZ\n7eul5YqkSBaMi8BvAKzvZJUSo8lKnclCnclCbYPFcWw02RJBnclKvdl+bLJgNFsd5xrMfW9UohCC\nhOgwjp/JRwJVNUbKKmqICgtEqxFoNAKtBnQaDVqB7VjYzwvQCGG7aWyPtU6PNUIg7GUEoBH25iB7\n05Dz87ZYmpqMHPHh1KRkbz4qq27gbLGt2aqoRS0Yq6S6uoGqqgaCfXUkhPuTMMiX8EDvxhFQ9iax\npuawpuPu/f+pYbVKv1TfYOInT7xJda3tj+wHKy4ls1rD6cLmw2MNeg1Xjh/MFeMi+uRCgFJK6kxW\nahtsH/w1DRbqGizU2pNAjf18nf2+tjEhtDPU0100wtZBrNdq8NZp0GsFeq0GL/u9TtN0rNM2Pa/X\nCvQaDTqtQK8R6DS25233tmOtpukaWo3gnc/28FlKGgLw8/HmhcduJDjA89f3Kq1usE0UzCrnRH6V\nYzvalgIMOsbb9/UYF9P+6rpqHoai2G3eeZTXPtyJER1GnxAShsU1+zan1wquSIpk0fjBHrXTmsli\ndXzQV9ebHY9rGyzU1Jtt5+3HjYnBHb/6QoC3ToNBp8HLfu+t0+Kt0+Ct1+CtbXGv0+CltZX1ciSF\npuSg04hem8tS32DiZ0+/T2FpFQBzJg/jF7cv7JX37ik19WYO51RwMKucI7kVrZanaaTVCEYM9mdi\nXDAThgQRGdS0UZhKGIoCWK1W/ufJ98kot1IrvIkbHEJEmG0lfp1GMG9MOEsmRhHk6/o+isYaQHW9\nmWr7B35VvZmaelsCqLYnhpp6C9UN5l5t6jHoNRj0Gnz1WnwcNw0Gvdb2nM5+7zi2P9bZPuj78mTF\ntBO5PPm3zxzHj/xkMdPGdX9tMXdqMFs5fq6Sg5nlHMopp7Ku/V20I4O8mTAkmAlxQYyNCVIJQxnY\n8svrePGzI2zanw3YvmFNHBWLTqth7shBLJ0cRZj/xS1DLaWtw7eq3kx1ve0Dv6reTLXRYj9ndjxX\nU2+mnZaDHmPQafDx0uLrpcVXb79vcWzQa/D1akoMBr3G0Z4+UL341g5S9pwAICzYj+cfuREfQ98e\nOi2lJLO41rExVFtL7Td6/e7pKmEoA1NJdT0bDuTzbUYxx8/kU11nX5V2UCDXXzKM5VOiiQjseN9u\nKaWjKajSaPvArzSaqKq32Ean1NtGqFTXm9tdK+hiaQT4eevw89Labt5afL2cjr20+Hnr8LU/9tFr\ne31Jif6iqsbIA79/j8pq2yTNxZcmcdcP5ro5qp5VXtPA4dwK0rIrOJZX2WzIrkoYyoBTWWfi87Tz\n7DhWiNkqKa+q5VS2bRmQANHAKz+7kjFDQjGarVQZbYmg0j40sdJosj12JAizS4Z3GvQa/O1JwN9b\nh7+3ttmxn7fW8djQx5t6+hrnRSkF8LufXcOoxMHuDcpFGsy2meaHcso5lF3BH2+aqBKGMjDUNVj4\n4vB5thw+T53JisU+4zbrXClYTfhpzIyIj2BowmAqjT1fI9BrBQHeOvwNOtu9PQkEeOsI8NY6zvt5\nadXGSR5MSsnvX/2cA8dsTZixkSE8+6sf9MqyIe4kpUSj0aiEofQfJouVSqOZ8jpbTaCyzkxpbQOp\n2eUcz6+i3my1LblgLy+kFWN1NRqsaDUaxo+I6fIfvkGvIdCga/rwN+gINDQ99vfWEmjQ4aVVNYH+\noqi0igeffp/6BtuOiTcunsYNV01zc1Su55GjpIQQVwHP0bTj3jNtlHkBWIxtx73bpZSpQghv4GvA\nC9sEww+llGvbeQ+VMPqYBrOVCqOJyjozFUYzFXUmKhqbierMVBhN1DY4zXJFUlbdwPkKY6vagkGv\nITLQQFZuASb7RL2YiGCiwpuWAdFrBYGNH/4GHYEGffNje23BS9UGBqSNXx3mnx9/C4BWq+HZX/2Q\nIYND3ByVa3lcwhBCaIAMbHt6nwP2AiullOlOZRYDq+17es8Enm/c01sI4SulrLXvDf4t8ICUck8b\n76MShgdpVjOwf/iX19mSQUWdLTnUdXrimKS81sT5ciP15uav8dJpiAoyEBPiQ2FhKSdP5yEsFvy9\ntfzs5nkMCjA4EoLqG1A6YrVaefS5TzmZVQjAqMTB/O7BFf36d8YT98OYAZyUUmYBCCHeBVYA6U5l\nVgDrAKSUu4UQQUKISCllgZSycUyYtz1WlRXczGKVVBrNjtpBeZ3JUTtoTBA1DZYLX+iCJNVGM0WV\n9RgbLGgAP60GjYAAby1XjIvk8jHhhPh6UV1j5KdPfo3B3qRw18p5zBoa1gMxKAOFRqPhpyvn8cv/\n+wir1cqJs+fZ8u0xFs0d5+7QPIqrE0YMkON0nIstiXRUJs9+rsBeQ9kPDANeklLudWGsA56Ukup6\nCxX2moBzMqios9USquvNPTKzWKuBQIOeIIOOIB89gT625qFgHz1FFUZSjhVSXW7EVwh87Us6+3pp\nWTTBtoxH4zLPAO9v3udof46NDGH+jFEXH6Ay4MRHh3HdFZP4cMsBANat38W0pHjCgv3dHJnn8Jw1\nEdogpbQCk4UQgcCnQoixUspjbZVds2aN43FycjLJycm9EmNfUmey2BKAvZmoKSk09iGYemRYqUZg\n6x/w0RPsY+svCPLREeR07++tbVXdP1NYzaf7z3EsrxJoWpjNS6dhYVIkV46PbLUw4LnCcrbYN8YB\nuHXFLLSqH0LppuuvnMJ3B09zrqgCY72JV9/fycN3X9UvmqZSUlJISUm5qGu4ug9jFrBGSnmV/fhh\nQDp3fAshXgZ2SCnfsx+nA/OklAUtrvUboEZK+ec23mfA92GYLNZWiaDSqamoos7cqg+gO4QAfy+t\nPRk0TwTBPnpHn0FXZhHnltby6f5zpGaVNzvfuIzH0klR7e5J8X//3MKutDMAjB0WxZP3L+8Xf9yK\n+xw9dY7HX1zvOP7Rsplct3CyGyNyDU/sw9gLDBdCxAP5wErgphZl1gP3Ae/ZE0y5lLJACDEIMEkp\nK4QQPsBC4A8ujtcjWayS6vqWtYHmTUbOO3ZdDB+9hiCfpgTgqBU4JYeemllcWGlk/YFz7D5d2qyZ\nSyNgzohBXD2l42U8MjILHMkC4LYVs1SyUC7auOHRLLksiU1fHwHg7c92kxATxpSxcW6OzP1cmjCk\nlBYhxGpgC03Dao8LIVbZnpavSik3CSGWCCFOYRtWe4f95VHAG/Z+DA3wnpRykyvjdYeW/QbNO5Bt\nj6uMPbMekV4rbB/8Bl3zpGA/F+yjx0vn+uacoqp6Nh7M57uTxa1+rhlDQ1k+JZrBwRdexuON/37v\nOJ49aRgj4iNdEa4yAP14xWzO5BaTfuY8EvjLG1t55hfXEe20Y+NApCbuuVDj2kQV9olnLYeWlhtN\nVBl7ZjmKlv0GQfbaQbBT7cBX37rfoDcVV9WzMTWf706WtFrLf8KQIK6ZFkNcWOf2JdhzOJNn/rEZ\nsI2bf/6RG4kKD+rxmJWBq7yqll/96SNKym17qMRGhvD0z6/F16dvL1DYyOPmYfQWdySMlsnAuf/A\nkRR6qBMZwM9ba28isiUA56QQ5NP1foPeVFJtTxQZJZhbJIrR0QFcMzWG4ZGdH4lisVj52dPvca6o\nAoAllyVx5/X9a9E4xTOcyirk1y/81zEhdHpSAg/dtahfNH16Yh9Gn9TYZ1DZbAZy80TQUzUDAF8v\nDUEG29DSZn0GjUNODTq3bPh+sUqrG9iUls83J4pbJYpRUQEsnxLNqKiALl932650R7LwMXjxgyun\n9ki8itLS8PgIfrpyHi+8uR2AvUcyeW/zPlYunu7myNxjwCUMo8niWLG00mnFUsetzkR1Q8/tYmbQ\naxyjhxo//J37EIIMvdNv0JvKaxrYlHaer9OLWiWKEYP9WT4lmjHRgd26trHexHuf73McX3vFJIIC\nfC4qXkXpyLzpIzmbW8yGlEMAfLB5P4kxg5g5IdHNkfW+fpMwzBYrVY37FzR++NfbFqxrXL660mjq\n0R3NfL00jjWJguz9B/09GXSktLqBLw6f56v0Iswt1nsaHunPiinRjI4OuKjq/PodaZRX2RYACA3y\nY9m88RcVs6J0xq3LZ5F1rpRDGbkAPP+f7fzhf68lLirUzZH1rn7Th/Ho+uMXLtjp64Gfl9ZRKwhq\nXKzOPhu5sflILVRnU1BhZPOh83x/snUfxdAIP1ZMiWZsTOBFt/uWV9Vy75PvOGZ133dTMpfPGn1R\n11SUzqqqMfKrP33k2At88KBAnvnF9fj7XtwOju6i+jA6oaNVSxsTQYC3Tu1i1gm5pbVsSj3P3rOl\nrZrwEsP9WD4lmqTYi08Ujd7/fL8jWQyJCiV5xsgeua6idEaAn4GH776Kh//8CQ0mM+eLK/nLG1t5\nbNViNJqB8eWx3yQMIcDfW+f48HckBfs+BkEGPQEGHT56tWrpxTpdUM3G1HwO5VS0em54pD9LJ0X1\naKIAyCss58vvmlaFufXqmQPmj1TxHPHRYdx/y3ye/deXAKSm5/DWZ3u4dfksN0fWO/pNwnhy6SiP\nHVbaH0gpOX6uio2p+ZzIr2r1fFJsIEsmRTFycNdHPXXGWxt2Y7VXY5JGRKtZt4rbzJk0jMyFJXz0\npW2Rwk+3pZIYM4i5U4e7OTLX6zcJQyUL17BaJanZ5WxKyyezqLbZc0LAlIQQlkwcTPwgP5fFsOdw\nJrsPnXUc33q1WgJEca+blk4nM6+E/ceyAPjr2zuIiQwmMXaQmyNzrX7T6d0ffg5PUm+y8E1GMduO\nFlJYWd/sOY2AWcPDWDxxMFHBrh3SWlZZy8//8D5VNUYALps2ggdvXeDS91SUzqipq+fhZz92zAkK\nC/bjqQdWEBnWvSHjvU3N9FYuWml1A9uOFbAzvZjaFhsh6bSCS0cNYtH4wQwKcP3IECklv3/1cw4c\nywZsw2j/8vANfXZUitL/5BWW89CzH1NnbAAgJNCXJ+67uk9s76oShtJtZwqr2XqkkH1nS1stCOjr\npWXemHCuGBdJkG/by4y7whffHOXVD3Y6jp+4dxkTRsX22vsrSmccPJ7DH/6xGbN9+ZAAPwNP3LvM\n45unVMJQusRqlRzMKufLIwWcKqhu9XxEoDdXJEVyyYiwZjvc9Ya8wnJ++ccPaTCZAVg2bwJ3XDen\nV2NQlM46nJHH069tdgz79jV48et7ljAqcbCbI2ufShhKp9TWm/n2ZAlbjxRQUt3Q6vlRUQEsTIpk\nYlyQWzqXzWYLjz73KadzigAYMjiEP/7yerz0/WaMhtIPZWQW8NTfN1Jrb57y9tLz8F2LPLZWrBKG\n0i4pJWeLavg6vZjdp0swtVi6Q6cRTB8WysKkyE4vMe4q72zay4df7AdsS5f/8RfXkRDj2dV7RQE4\nm1vMk3/fSGV1HQA6nZZf3rGQ6UkJ7g2sDSphKK0YGyzsPl3KV+lFZJfUtnrez1tL8pgI5o8JJ9jP\n/ev8nzh7nsee+5TG/81bl8/imgWT3BqTonRFXmE5a1/a4NhHQyMED966wOPmaXhkwhBCXAU8R9OO\ne8+0UeYFYDG2Hfdul1KmCiFigXVAJGAFXpNSvtDOe6iE0UJ2SS0pxwvZfbqUelPrddhjQ32YPyaC\nWSNC8db1bv9Ee4z1Jn7xxw84X1wJ2PboXrv6ajWjW+lzCkurWPPXDRSU2H6XBXDPynlcMXuMewNz\n4nEJw769agawADiHbY/vlVLKdKcyi4HVUsqlQoiZwPNSyllCiMHAYHvy8Af2AyucX+t0DZUwsM2d\n2HOmlK/TizlbVNPqeb1WMH1oKMljwkkM9/O4yW9/eyeFbbts/70+Bi/+/NAPiQh1zcxxRXG10ooa\n1r70GbkFZY5zt18zh6vnT3BjVE08cfHBGcBJKWUWgBDiXWAF4PyhvwJbTQIp5W4hRJAQIlJKeR44\nbz9fLYQ4DsS0eO2AJ6XkdGEN350sZt+ZslZzJwCigg3MGx3O7BFh+Hl7ZsfxnsOZjmQB8JMfzlXJ\nQunTQoP8eOqB5Tz5942czS0G4N+ffkddfQM/XDTV476wdYarPz1igByn41xsSaSjMnn2cwWNJ4QQ\nCcAkYLcrguyLCiuNfH+yhF2nSimqqm/1vE4jmJoYwmWjwxk52N+jfznLKmv52zspjuM5k4dx6dQR\n7gtIUXpIoL8Pa1dfze9f/Zz0M+cBeO/zfdQZTdy6vO8toOmZXzed2JujPgQelFK2nixgt2bNGsfj\n5ORkkpOTXR5bb6s2mtl7ppRdp0o4Xdi6yQlscyfmjQ5nzsgwAgy9N8muu6SU/O2dFMfSH6FBfqy6\n4TKPTnCK0hV+Pt785p6l/PH1L0g7YduAaf2ONE7nFHH/j+YT3ks16ZSUFFJSUi7qGq7uw5gFrJFS\nXmU/fhiQzh3fQoiXgR1Syvfsx+nAPCllgRBCB3wGfC6lfL6D9+m3fRgmi5XDORV8f7KEwzkVrTYo\nAttM7KmJIcweEcaISM+uTbSkZnMrA4XJZOEv67Y2W0jT1+DFqhsuc8sIKk/s9NYCJ7B1eucDe4Cb\npJTHncosAe6zd3rPAp6TUs6yP7cOKJZS/u8F3qdfJQyzxcrxc1UcyCxjf2YZtfWt+yW0GkFSbCCz\nhocxMS64T24Fm1dYzi+e+QCTfUkFNZtb6e8sFivvf7Gfj77Yj/Mn1qVTR3D3D+fi59N766R5XMIA\nx7Da52kaVvsHIcQqbDWNV+1l/gpcRdOw2oNCiEuAr4HDgLTfHpVSbm7jPfp8wmgwWzmaW8H+zDIO\nZVe02XkNtp3sZg0PZfrQUAJ9PL/JqT0mk4XHnlezuZWBKf3MeZ7/zzbHdq8A4SEBPHDr5YwdFtUr\nMXhkwugNfTVhGBssHMqt4MDZMg7nVrQ5XwIgzN+L2cPDmDU8jMHBhl6OsudZrVae/fdWdqWdAdRs\nbmVgqq1r4PWPvyVlzwnHOQFct3AKN1w1FZ2L50ephNEHVBvNpGWXcyCzjKN5lZgtbccd5u/FlIQQ\npiaGMCzC8+ZMdJetk/srtu9uGkL742tms3z+RDdGpSju8+3B07zy3tfU1DWNdhw6JJyf3baAmIhg\nl72vShgeSEpJZnEtR3IrOJJTwZmiGtoLNTLIm2mJoUxJCCYuzLffJIlGUkre+PR7NqQccpxbNm8C\nt187u9/9rIrSFcVl1fz17R0czshznPPS67jj2jksnDPGJX8fKmF4iGqjmWN5lRzKKedobiVVRnO7\nZWNDfZiaGMKUhBCigw39+oPzgy/28+6mvY7j5BmjWH1zcr/+mRWls6SUrN9xiLc+243F0tQ8PXVs\nPHdcN4eo8KAefT+VMNzEuRZxOKeCsx3UIoSwdVxPig9mWmIIEYF9v0+iMzZ+dZh/fvyt43jWhET+\n97trCqEAABCCSURBVPaFaLV9b3SXorhSZl4xz63bRs75piVFNEIwf+YofrBoao+tgKASRi+RUpJX\nVseJ/CrS86vIyK+ipo2hr40CDDrGxQYyPjaIsbGBfWJCXU9K2XOCF9/a4TieMDKWR3+yGH0vb8qk\nKH1Fg8nMmxt2s/Grw83Oa7Uarpg1hh8smkJokN9FvYdKGC4ipSSn1JYgMvKryDjfcYJorEWMHxJE\nUmwQCYP6X39EZ+05nMn/vf4FVvv/z8iESJ64dxkG74GVNBWlO06cPc/bG/dw5OS5Zuf1Oi2LLhnH\ndQsnExTg061rq4TRQ8wWKzmldZw8X0XG+Woy8qvanRfRqLEWMWFIMGNjAvE3qPkEh07k8ttXNjna\nY+OiQnnqgRX4+/be5CRF6Q8OZ+Txzqa9nDh7vtl5L72OpZclsWLBJAL8uta8rRJGN0gpKalu4ExR\nDWcLazhbVENWcU2rHelaCjDoGBUV4LhF9fMO667KyCxgzUufOfY4HjwokN8+eA0hge7dzU9R+iop\nJQeP5/Dupr2OCa+NDN56liVPYPn8CZ2eLa4SRifU1pvJLK7lTGE1Z+wJoqNRTI2CfPWMHOzvSBCD\ng1SCaE/WuVJ+88J/HePKQ4P8+N3PrlHLlStKD5BSsvdIFu9s3EN2fmmz53wNXlw2bQTzpo9kRHxE\nh59RKmE4kVJSXmsip7SW3JI6ckpryS6ppaCi9VLgbQnz92JYRFOCiAzyVgmiE/KLKvj18/+lvMq2\nHWyAn4GnHljBkMEhbo5MUfoXKSXfpZ7h/c/3NdukqVF0eBCXTR/JvOkj2/yyNqATRlZxDTklteSW\n2pJDTklthx3Tzny8tCSG+5EY7sfQcD8SI/z69DpN7pJfVMGTf/vMsT6OwVvPk6uXMywu3M2RKUr/\nZbVa2bn/FO9v3ufY3rilMUOjSJ4xktmThjqarAZ0wrjztb0XLohtldeYEB+GRtgTRISfal7qAXsO\nZ/LCm9upMzYAtlEcv/npUsYNj3ZzZIoyMEgpOXrqHCl7M/g+9QzGelOrMjqdlulJCSTPGMn0pASV\nMJwZ9BpiQ32JDfVhSKjv/2/v/oOrKu88jr8/EPKTgIEEYglCAhbQFXFZBSqt6WoR6LR0dkul+8Oq\nO627ldbd7XTr9h+Y2dnZ1d2p1f3V6WpdqbbSdrRVt6vgataBKkYhiEAEimCAJBAgJOR3wnf/OCfJ\nTUjwBnJzOTff18ydnPPcc+59nnly7/ee53nO8zB9chZFk7IjORX45aqr6xw//e+3eO5/K3rS0tLG\n8jf3LGPhtTOSmDPnRq+29g7Kdx2mrPx9dlYe6RnWHuvZR//islvTe8QU5GZQNCkrCA6Ts5k+KZv8\n3HS/ckigM40tfO/JzX3GiBfk5fLte5Z5M5RzSZSRPo6lC2ezdOFsTjc0s+WdA5SV7+PQ0bpLet2U\nucJIhXJEyb5DtfzzE5s4Wd+7VOwN86Zz/5/eOuTx4M65kXH42Clef3sfr7+9n8f+7s7R2ySVCuWI\nAjPjpS27eeK53/TckCfgi8sX8qXbF0ZuUXvnRqNz584xduzYIQeMhH+6JS2XVClpn6TvDHLMo5L2\nS6qQdENM+uOSaiW9O9B5bmS1tnXw6FOv8tgvtvQEi5ysDL5770rWrLjRg4VzEXGxn9VEr+k9BthH\nsKb3MaAcWGNmlTHHrADWhmt6LwIeiVnTeylwFthgZvMv8D5+hZFgx47X808/2tTnRqHiony+fc8y\npk6ekMScOecuxsUMq010p/dNwH4zOwwg6RlgFVAZc8wqYAOAmW2TNFHSVDOrNbMtknyoTZL1HzIL\n8PuL5vLV1Ut9DW7nRpFEf9qnAVUx+0cIgsiFjjkaptUmNmvuoxw/1cjTL25jyzsHetLS0sbytdVL\nuXXxvCTmzDmXDCnz83D9+vU926WlpZSWliYtL1HX1NLGs5t38OL/7aKzs/dueR8y61x0lZWVUVZW\ndkmvkeg+jMXAejNbHu4/AJiZPRhzzA+A18xsY7hfCdxiZrXh/gzgBe/DSLzOzi5e3rqHn730Nmeb\n+865tfj6Ev78jk/5kFnnUsTl2IdRDswOv/SrgTXAl/sd8zxwH7AxDDD13cEipPDhEsTM2PbuBzz1\nwjaqT5zp89zsq6Zw1xeWMG/WlUnKnXPucpHQgGFmXZLWApsIhvA+bmZ7Jd0bPG0/NLNfS1op6QDQ\nBNzdfb6knwClwGRJHwLrzOyJROZ5tNl/uJYnf/kmew9W90kvyMvlTz6/iJtvmOV3yzvnAL9xb9Q6\nfqqRp17YxtbtB/qkZ2em88XbF7Lyk7/ja247l8IuxyYpdxkxM/YerOGVN/ayZfuBnpvvILiRZ8Un\nr2X17Qu9n8I5NyAPGKPAmcYWysr38cpv9nCsXx8FwOL5xfzx5xbxsSlXJCF3zrmo8ICRosyMisoj\nvPLGXsrfO9TnaqLbx2dO5SurljC3pDAJOXTORY0HjBRTd/osr26r5NU33+fE6cbzns/MGMenfu9q\nbls8j5Lp+d6h7ZyLmweMFHCy/iw7K4/wxs6D7NjzIQN1/88pLuQzS+axZEEJmRm+/Kxzbug8YERQ\ne0cnuw9Us7OyiorKKqpqzl8AHmB8dgalN87htk/MY3ph3gjn0jmXajxgRICZ8WH1aSoqq6jYW8We\ng9V9puzob/7Hi7h1yVwWXVfsQ2Odc8PGA8ZlqKOji6qaU3xwtI49v61hZ2UVpxuaBz1+7NgxXDPr\nSq6fU8SSBbMozPfpxp1zw88DRpK1tnVw6OhJDh45wcEjdXxw5CRVNacGHNUUq2hqHtfPLWLB3Olc\nM+tK75dwziWcB4wR0t7RyfFTjdTWNVBVczoIDlUnqD5xZsBO6v5ysjKYP6eIBXOLuH5OEQWTchOe\nZ+eci+UBY5iYGY1NrdTUNXD8ZCPVdWeoPdlAbV0DtScbOFXfFFdg6FaYP4GZ0/IpmZ7PdVdPY/ZV\nBb4EqnMuqTxgfAQzo+FsK/WNzdQ3tlDf0Pv3dENzT/qJU420tnUM+fUFFBXmUVyUT0lRASXT85k5\nbTI5WRnDXxjnnLsEKR8wzp07R1t7J20dnbS2ddLS2k5TSxtNLe00t7RztrmNptY2mlvaaWppp6m5\njaaWNs42t9HY1MqZxhbODcPEhgLy83KZmp/LlQUTKZ6WT3FRPjM+NomMdO9/cM5d/lImYPztw8/R\n1t5Je0dnECDCIHGh4afDLSN9HIX5EyjMn8DUycGjsCD4W5A3nrQ0H+LqnIuulAkY+w4lbgnwnKwM\n8iZkMzE3iysmZJOXG2x3p+VNyGbSxBwmjM/0qTaccykr4QFD0nLg+/QuoPTgAMc8CqwgWEDpLjOr\niPfcj3x/ID19HBnpaWSMSyMrcxw5WRnkZKWTnZXO+OwMssP9nKx0sjMzGJ8d7I/PySQvN9tvfnPO\nORK/pvcYYB9wK3CMYMnWNWZWGXPMCmCtmX1W0iLgETNbHM+5Ma9he39bTUZ6GulhYMhIDx7j0sZG\n+ld/WVkZpaWlyc5Gwnj5os3LF10Xs4BSosdp3gTsN7PDZtYBPAOs6nfMKmADgJltAyZKmhrnuT3m\nlhRSXJTPtClXkJ83ntycTNLHpUU6WEDwD5vKvHzR5uUbXRIdMKYBVTH7R8K0eI6J51znnHMj5HK8\nEyzalwTOOZeiEt2HsRhYb2bLw/0HAIvtvJb0A+A1M9sY7lcCtwDFH3VuzGskrhDOOZeihtqHkehR\nUuXAbEkzgGpgDfDlfsc8D9wHbAwDTL2Z1Uqqi+NcYOiFds45N3QJDRhm1iVpLbCJ3qGxeyXdGzxt\nPzSzX0taKekAwbDauy90biLz65xzbnAJbZJyzjmXOi7HTu+4SVouqVLSPknfSXZ+hpukQ5J2Stoh\n6a1k5+dSSXpcUq2kd2PS8iRtkvS+pJclTUxmHi/FIOVbJ+mIpO3hY3ky83ixJBVJelXSbkm7JH0z\nTE+J+hugfN8I01Ol/jIkbQu/S3ZJWhemD6n+InuFMZQb+6JK0kFgoZkNvGh3xEhaCpwFNpjZ/DDt\nQeCkmT0UBv08M3sgmfm8WIOUbx3QaGbfS2rmLpGkQqDQzCokjQfeIbgv6m5SoP4uUL47SIH6A5CU\nbWbNksYCW4FvAn/IEOovylcYQ7qxL6JEtOuoDzPbAvQPfquAJ8PtJ4EvjGimhtEg5YMUGCpuZjXd\nU/aY2VlgL1BEitTfIOXrvu8r8vUHYGbd6zxnEPRfG0Osvyh/GY2GG/sM2CypXNJXk52ZBJliZrUQ\nfGiBKUnOTyKslVQh6bGoNtnEkjQTWAC8CUxNtfqLKd+2MCkl6k/SGEk7gBpgs5mVM8T6i3LAGA1u\nNrPfBVYC94VNHqkumm2kg/t3oMTMFhB8UCPdtBE21/wCuD/8Jd6/viJdfwOUL2Xqz8zOmdkNBFeG\nN0m6liHWX5QDxlHgqpj9ojAtZZhZdfj3BPAcQTNcqqkN5w7rbkc+nuT8DCszO2G9HYX/CdyYzPxc\nCklpBF+mPzazX4XJKVN/A5Uvleqvm5k1AGXAcoZYf1EOGD03BUpKJ7ix7/kk52nYSMoOf+0gKQdY\nBryX3FwNC9G3Tfh54K5w+yvAr/qfEDF9yhd+CLv9AdGuwx8Be8zskZi0VKq/88qXKvUnKb+7OU1S\nFvAZgn6aIdVfZEdJQc96GY/Qe2PfPyY5S8NGUjHBVYURdFA9HfXySfoJUApMBmqBdcAvgZ8D04HD\nwJfMrD5ZebwUg5Tv0wTt4eeAQ8C93W3GUSLpZuB1YBfB/6QB3wXeAn5GxOvvAuX7I1Kj/q4j6NQe\nEz42mtnfS5rEEOov0gHDOefcyIlyk5RzzrkR5AHDOedcXDxgOOeci4sHDOecc3HxgOGccy4uHjCc\nc87FxQOGcyFJXeEU1u+F00D/dcxzCyV9/wLnzpA04IqQzqUKvw/DuZCkBjObEG7nAz8FtprZ+jjO\nLQW+ZWafS2gmnUsiv8JwbgBmVgd8DVgLIOkWSS/EbO8Ir0beCadu+QdgaZh2f3jF8bqkt8PH4phz\nX5P0c0l7Jf24+z0l3Shpazgz6puScsIZRh8KF7+pSOFZi10EJHRNb+eizMw+CL+wC7qTwr/fAr5u\nZm9IygZagQcIrjA+DyApE7jNzNolzSa4WumeuG4BcA3B7KdbJX2CYG60Z4DVZrY9nEesFfgzoN7M\nFoVzpm2VtMnMDie6/M715wHDuQsbaPGcrcDDkp4GnjWzo9J5h6UD/yppAdAFXB3z3FvdMxFLqgBm\nAg3AMTPbDj2L+CBpGXCdpNXhuRPC1/KA4UacBwznBiGpBOg0sxOxAcHMHpT0IvBZgl/8ywY4/a+A\nGjObHy6J2RLzXFvMdhe9n8OBgpOAb5jZ5ksoinPDwvswnOsVOy15AfAfwL+cd5BUYma7zewhgqak\nuUAjwa//bhOB6nD7TmDsR7z3+0ChpIXhe4wPA83LwNfDtRqQdHU4PbVzI86vMJzrlSlpO0FzUgew\nwcweHuC4v5T0aYKrg93A/xD0b3SFS2D+F/BvwLOS7gReApoGeU8DMLMOSXcQNGNlAc3AbcBjBE1W\n2xVc5hwnoutmu+jzYbXOOefi4k1Szjnn4uIBwznnXFw8YDjnnIuLBwznnHNx8YDhnHMuLh4wnHPO\nxcUDhnPOubh4wHDOOReX/wdrGPhAjel04gAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe914ea02d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "betas = [10, 20, 40]\n",
    "thinkplot.PrePlot(num=len(betas))\n",
    "\n",
    "for beta in betas:\n",
    "    cond = suite.Conditional(0, 1, beta)\n",
    "    cond.label = 'beta = %d' % beta\n",
    "    thinkplot.Pdf(cond)\n",
    "\n",
    "thinkplot.Config(xlabel='Distance',\n",
    "                ylabel='Prob')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "Another way to visualize the posterio distribution: a pseudocolor plot of probability as a function of `alpha` and `beta`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe914bef2d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "thinkplot.Contour(suite.GetDict(), contour=False, pcolor=True)\n",
    "\n",
    "thinkplot.Config(xlabel='alpha',\n",
    "                ylabel='beta',\n",
    "                axis=[0, 30, 0, 20])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "Here's another visualization that shows posterior credible regions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe914bd4a90>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "d = dict((pair, 0) for pair in suite.Values())\n",
    "\n",
    "percentages = [75, 50, 25]\n",
    "for p in percentages:\n",
    "    interval = suite.MaxLikeInterval(p)\n",
    "    for pair in interval:\n",
    "        d[pair] += 1\n",
    "\n",
    "thinkplot.Contour(d, contour=False, pcolor=True)\n",
    "thinkplot.Text(17, 4, '25', color='white')\n",
    "thinkplot.Text(17, 15, '50', color='white')\n",
    "thinkplot.Text(17, 30, '75')\n",
    "\n",
    "thinkplot.Config(xlabel='alpha',\n",
    "                   ylabel='beta',\n",
    "                   legend=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Exercise:** From [John D. Cook](http://www.johndcook.com/blog/2010/07/13/lincoln-index/)\n",
    "\n",
    "\"Suppose you have a tester who finds 20 bugs in your program. You want to estimate how many bugs are really in the program. You know there are at least 20 bugs, and if you have supreme confidence in your tester, you may suppose there are around 20 bugs. But maybe your tester isn't very good. Maybe there are hundreds of bugs. How can you have any idea how many bugs there are? There’s no way to know with one tester. But if you have two testers, you can get a good idea, even if you don’t know how skilled the testers are.\n",
    "\n",
    "Suppose two testers independently search for bugs. Let k1 be the number of errors the first tester finds and k2 the number of errors the second tester finds. Let c be the number of errors both testers find.  The Lincoln Index estimates the total number of errors as k1 k2 / c [I changed his notation to be consistent with mine].\"\n",
    "\n",
    "So if the first tester finds 20 bugs, the second finds 15, and they find 3 in common, we estimate that there are about 100 bugs.  What is the Bayesian estimate of the number of errors based on this data?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Solution\n",
    "\n",
    "from scipy.special import binom as choose\n",
    "\n",
    "def binom(k, n, p):\n",
    "    \"\"\"Computes the rest of the binomial PMF.\n",
    "\n",
    "    k: number of hits\n",
    "    n: number of attempts\n",
    "    p: probability of a hit\n",
    "    \"\"\"\n",
    "    return p**k * (1-p)**(n-k)\n",
    "\n",
    "\n",
    "class Lincoln(Suite, Joint):\n",
    "    \"\"\"Represents hypotheses about the number of errors.\"\"\"\n",
    "\n",
    "    def Likelihood(self, data, hypo):\n",
    "        \"\"\"Computes the likelihood of the data under the hypothesis.\n",
    "\n",
    "        hypo: n, p1, p2\n",
    "        data: k1, k2, c\n",
    "        \"\"\"\n",
    "        n, p1, p2 = hypo\n",
    "        k1, k2, c = data\n",
    "\n",
    "        part1 = choose(n, k1) * binom(k1, n, p1)\n",
    "        part2 = choose(k1, c) * choose(n-k1, k2-c) * binom(k2, n, p2)\n",
    "        return part1 * part2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "8.7543328146528235e-06"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Solution\n",
    "\n",
    "data = 20, 15, 3\n",
    "probs = np.linspace(0, 1, 31)\n",
    "hypos = []\n",
    "for n in range(32, 350):\n",
    "    for p1 in probs:\n",
    "        for p2 in probs:\n",
    "            hypos.append((n, p1, p2))\n",
    "\n",
    "suite = Lincoln(hypos)\n",
    "suite.Update(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n86AAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe914c65290>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Solution\n",
    "\n",
    "n_marginal = suite.Marginal(0)\n",
    "thinkplot.Pmf(n_marginal, label='n')\n",
    "thinkplot.Config(xlabel='number of bugs',\n",
    "                   ylabel='PMF')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "post mean n 105.457426627\n",
      "MAP n 72\n"
     ]
    }
   ],
   "source": [
    "# Solution\n",
    "\n",
    "print('post mean n', n_marginal.Mean())\n",
    "print('MAP n', n_marginal.MAP())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Exercise:** The GPS problem.  According to [Wikipedia]()\n",
    "\n",
    "￼\n",
    "> GPS included a (currently disabled) feature called Selective Availability (SA) that adds intentional, time varying errors of up to 100 meters (328 ft) to the publicly available navigation signals. This was intended to deny an enemy the use of civilian GPS receivers for precision weapon guidance.\n",
    "> [...]\n",
    "> Before it was turned off on May 2, 2000, typical SA errors were about 50 m (164 ft) horizontally and about 100 m (328 ft) vertically.[10] Because SA affects every GPS receiver in a given area almost equally, a fixed station with an accurately known position can measure the SA error values and transmit them to the local GPS receivers so they may correct their position fixes. This is called Differential GPS or DGPS. DGPS also corrects for several other important sources of GPS errors, particularly ionospheric delay, so it continues to be widely used even though SA has been turned off. The ineffectiveness of SA in the face of widely available DGPS was a common argument for turning off SA, and this was finally done by order of President Clinton in 2000.\n",
    "\n",
    "Suppose it is 1 May 2000, and you are standing in a field that is 200m square.  You are holding a GPS unit that indicates that your location is 51m north and 15m west of a known reference point in the middle of the field.\n",
    "\n",
    "However, you know that each of these coordinates has been perturbed by a \"feature\" that adds random errors with mean 0 and standard deviation 30m.\n",
    "\n",
    "1) After taking one measurement, what should you believe about your position?\n",
    "\n",
    "Note: Since the intentional errors are independent, you could solve this problem independently for X and Y.  But we'll treat it as a two-dimensional problem, partly for practice and partly to see how we could extend the solution to handle dependent errors.\n",
    "\n",
    "You can start with the code in gps.py.\n",
    "\n",
    "2) Suppose that after one second the GPS updates your position and reports coordinates (48, 90).  What should you believe now?\n",
    "\n",
    "3) Suppose you take 8 more measurements and get:\n",
    "\n",
    "    (11.903060613102866, 19.79168669735705)\n",
    "    (77.10743601503178, 39.87062906535289)\n",
    "    (80.16596823095534, -12.797927542984425)\n",
    "    (67.38157493119053, 83.52841028148538)\n",
    "    (89.43965206875271, 20.52141889230797)\n",
    "    (58.794021026248245, 30.23054016065644)\n",
    "    (2.5844401241265302, 51.012041625783766)\n",
    "    (45.58108994142448, 3.5718287379754585)\n",
    "\n",
    "At this point, how certain are you about your location?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Solution\n",
    "\n",
    "from thinkbayes2 import EvalNormalPdf\n",
    "\n",
    "class Gps(Suite, Joint):\n",
    "    \"\"\"Represents hypotheses about your location in the field.\"\"\"\n",
    "\n",
    "    def Likelihood(self, data, hypo):\n",
    "        \"\"\"Computes the likelihood of the data under the hypothesis.\n",
    "\n",
    "        hypo: \n",
    "        data: \n",
    "        \"\"\"\n",
    "        std = 30\n",
    "        meanx, meany = hypo\n",
    "        x, y = data\n",
    "        like = EvalNormalPdf(x, meanx, std)\n",
    "        like *= EvalNormalPdf(y, meany, std)\n",
    "        return like"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2.3287325820864544e-05"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Solution\n",
    "\n",
    "from itertools import product\n",
    "\n",
    "coords = np.linspace(-100, 100, 101)\n",
    "joint = Gps(product(coords, coords))\n",
    "joint.Update((51, -15))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4.3024101319712149e-06"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Solution\n",
    "\n",
    "joint.Update((48, 90))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.1118148191216602e-34"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Solution\n",
    "\n",
    "pairs = [(11.903060613102866, 19.79168669735705),\n",
    "             (77.10743601503178, 39.87062906535289),\n",
    "             (80.16596823095534, -12.797927542984425),\n",
    "             (67.38157493119053, 83.52841028148538),\n",
    "             (89.43965206875271, 20.52141889230797),\n",
    "             (58.794021026248245, 30.23054016065644),\n",
    "             (2.5844401241265302, 51.012041625783766),\n",
    "             (45.58108994142448, 3.5718287379754585)]\n",
    "\n",
    "joint.UpdateSet(pairs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nr6EAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe914b04b10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Solution\n",
    "\n",
    "thinkplot.PrePlot(2)\n",
    "pdfx = joint.Marginal(0)\n",
    "pdfy = joint.Marginal(1)\n",
    "thinkplot.Pdf(pdfx, label='posterior x')\n",
    "thinkplot.Pdf(pdfy, label='posterior y')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "53.1957132094 9.48680494799\n",
      "31.0728627918 9.48683298048\n"
     ]
    }
   ],
   "source": [
    "# Solution\n",
    "\n",
    "print(pdfx.Mean(), pdfx.Std())\n",
    "print(pdfy.Mean(), pdfy.Std())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "**Exercise:** [The Flea Beetle problem from DASL](http://lib.stat.cmu.edu/DASL/Datafiles/FleaBeetles.html)\n",
    "\n",
    "Datafile Name: Flea Beetles\n",
    "\n",
    "Datafile Subjects: Biology\n",
    "\n",
    "Story Names: Flea Beetles\n",
    "\n",
    "Reference: Lubischew, A.A. (1962) On the use of discriminant functions in taxonomy. Biometrics, 18, 455-477. Also found in: Hand, D.J., et al. (1994) A Handbook of Small Data Sets, London: Chapman & Hall, 254-255.\n",
    "\n",
    "Authorization: Contact Authors\n",
    "\n",
    "Description: Data were collected on the genus of flea beetle Chaetocnema, which contains three species: concinna (Con), heikertingeri (Hei), and heptapotamica (Hep). Measurements were made on the width and angle of the aedeagus of each beetle. The goal of the original study was to form a classification rule to distinguish the three species.\n",
    "\n",
    "Number of cases: 74\n",
    "\n",
    "Variable Names:\n",
    "\n",
    "Width: The maximal width of aedeagus in the forpart (in microns)\n",
    "\n",
    "Angle: The front angle of the aedeagus (1 unit = 7.5 degrees)\n",
    "\n",
    "Species: Species of flea beetle from the genus Chaetocnema\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Suggestions: \n",
    "\n",
    "1. Plot CDFs for the width and angle data, broken down by species, to get a visual sense of whether the normal distribution is a good model.\n",
    "\n",
    "2. Use the data to estimate the mean and standard deviation for each variable, broken down by species.\n",
    "\n",
    "3. Given a joint posterior distribution for `mu` and `sigma`, what is the likelihood of a given datum?\n",
    "\n",
    "4. Write a function that takes a measured width and angle and returns a posterior PMF of species.\n",
    "\n",
    "5. Use the function to classify each of the specimens in the table and see how many you get right.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Width</th>\n",
       "      <th>Angle</th>\n",
       "      <th>Species</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>150</td>\n",
       "      <td>15</td>\n",
       "      <td>Con</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>147</td>\n",
       "      <td>13</td>\n",
       "      <td>Con</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>144</td>\n",
       "      <td>14</td>\n",
       "      <td>Con</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>144</td>\n",
       "      <td>16</td>\n",
       "      <td>Con</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>153</td>\n",
       "      <td>13</td>\n",
       "      <td>Con</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Width  Angle Species\n",
       "0    150     15     Con\n",
       "1    147     13     Con\n",
       "2    144     14     Con\n",
       "3    144     16     Con\n",
       "4    153     13     Con"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "\n",
    "df = pd.read_csv('flea_beetles.csv', delimiter='\\t')\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def plot_cdfs(df, col):\n",
    "    for name, group in df.groupby('Species'):\n",
    "        cdf = Cdf(group[col], label=name)\n",
    "        thinkplot.Cdf(cdf)\n",
    "    \n",
    "    thinkplot.Config(xlabel=col, legend=True, loc='lower right')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe914c7c350>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_cdfs(df, 'Width')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nlZDlLkklZLlLUglZ7pJUQpa7JJWQ5S5JJWS5S1IJWe6SVEKWuySVkOUuSSVkuUtSCVnuklRClrsk\nlZDlLkklZLlLUglZ7pJUQpa7JJWQ5S5JJWS5S1IJWe6SVEKWuySVkOUuSSVkuUtSCVnuklRClrsk\nlZDlLkklZLlLUglZ7pJUQpa7JJWQ5S5JJVRXuUfEaRGxMiKejYiv9rHfcRGxKSLOaVxESdJA9Vvu\nETEEuBE4FTgcmBoRh/Wy39XA/Y0OKUkamHpG7pOA1Zm5JjM3AQuAyT3s92XgB8A/NTCfJGkH1FPu\nY4C1NY/XVbd1iYjRwJTM/G9ANC6eJGlHNOqE6vVA7Vy8BS9JBRpWxz7rgXE1j8dWt9WaCCyIiAD2\nBU6PiE2Zuaj7wWbOnNl1v6Ojg46OjgFGlqRy6+zspLOzc6eOEZnZ9w4RQ4FVwEnAS8BjwNTMXNHL\n/t8D7snMH/bwXPb3eqrP9HtWdt3/1pnbnd+WCnPUlXd23V923WcLTFIeEUFmDmhGpN+Re2ZujojL\ngcVUpnHmZuaKiLik8nTe1v1LBhJAktR49UzLkJn3AR/utu3WXvb98wbkkiTtBD+hKkklZLlLUglZ\n7pJUQpa7JJWQ5S5JJWS5S1IJWe6SVEKWuySVkOUuSSVkuUtSCVnuklRClrsklZDlLkklZLlLUglZ\n7pJUQpa7JJWQ5S5JJWS5S1IJ1XWZPUkaLAcddBBr1qwpOkZLGD9+PC+88EJDjmW5SyrUmjVryMyi\nY7SEiGjYsSx3qU3c/eCTLLx3KW+/s6noKH0b8oGiEwjn3KW20RbFXmNIA0ehGjjLXWoT7Vbso/d7\nf9Ex3tOclunm4ede5afPbuSdd50DVOu684ZLi47Qq2lzlhYdQThy3067FfvwYf7qK2l7lns37Vbs\nJx26b9ExpNKbP38+xx13HCNGjGDMmDF85jOf4Ze//GXRsfrktEwfvnXmYUVHkLq8zu68NmRPthBO\nfTTRtddeyzXXXMOtt97KKaecwvDhw7n//vu55557+PjHP150vF45cpfaxNZibxe77tL+9fLmm28y\nY8YMbr75ZiZPnszuu+/O0KFDOeOMM7j66qt55513+MpXvsKYMWMYO3YsV155JZs2VU58/+xnP+PA\nAw/k2muvZf/992fMmDF8//vfb1p2R+5Sm2i3Yj/r6NE7fZzPXnFLA9L8wUBPRD/yyCO8/fbbTJky\n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\nJfT/ARTQCwVjRZtwAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe914d35b10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_cdfs(df, 'Angle')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "from thinkbayes2 import EvalNormalPdf\n",
    "\n",
    "class Beetle(Suite, Joint):\n",
    "    \n",
    "    def Likelihood(self, data, hypo):\n",
    "        \"\"\"\n",
    "        data: sequence of measurements\n",
    "        hypo: mu, sigma\n",
    "        \"\"\"\n",
    "        mu, sigma = hypo\n",
    "        likes = EvalNormalPdf(data, mu, sigma)\n",
    "        return np.prod(likes)\n",
    "    \n",
    "    def PredictiveProb(self, data):\n",
    "        \"\"\"Compute the posterior total probability of a datum.\n",
    "        \n",
    "        data: sequence of measurements\n",
    "        \"\"\"\n",
    "        total = 0\n",
    "        for (mu, sigma), prob in self.Items():\n",
    "            likes = norm.pdf(data, mu, sigma)\n",
    "            total += prob * np.prod(likes)\n",
    "        return total"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from itertools import product\n",
    "\n",
    "def MakeWidthSuite(data):\n",
    "    mus = np.linspace(115, 160, 51)\n",
    "    sigmas = np.linspace(1, 10, 51)\n",
    "    suite = Beetle(product(mus, sigmas))\n",
    "    suite.Update(data)\n",
    "    return suite"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "groups = df.groupby('Species')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Con 0.0200863522822\n",
      "Hei 0.00368097211374\n",
      "Hep 0.0867791556717\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe914e841d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "for name, group in groups:\n",
    "    suite = MakeWidthSuite(group.Width)\n",
    "    thinkplot.Contour(suite)\n",
    "    print(name, suite.PredictiveProb(137))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def MakeAngleSuite(data):\n",
    "    mus = np.linspace(8, 16, 101)\n",
    "    sigmas = np.linspace(0.1, 2, 101)\n",
    "    suite = Beetle(product(mus, sigmas))\n",
    "    suite.Update(data)\n",
    "    return suite"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Con 0.20957983351\n",
      "Hei 0.181327548441\n",
      "Hep 0.0106017571682\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fe917b1a510>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "for name, group in groups:\n",
    "    suite = MakeAngleSuite(group.Angle)\n",
    "    thinkplot.Contour(suite)\n",
    "    print(name, suite.PredictiveProb(13))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "class Species:\n",
    "    \n",
    "    def __init__(self, name, suite_width, suite_angle):\n",
    "        self.name = name\n",
    "        self.suite_width = suite_width\n",
    "        self.suite_angle = suite_angle\n",
    "        \n",
    "    def __str__(self):\n",
    "        return self.name\n",
    "        \n",
    "    def Likelihood(self, data):\n",
    "        width, angle = data\n",
    "        like1 = self.suite_width.PredictiveProb(width)\n",
    "        like2 = self.suite_angle.PredictiveProb(angle)\n",
    "        return like1 * like2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "species = {}\n",
    "\n",
    "for name, group in groups:\n",
    "    suite_width = MakeWidthSuite(group.Width)\n",
    "    suite_angle = MakeAngleSuite(group.Angle)\n",
    "    species[name] = Species(name, suite_width, suite_angle)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.027390362241871791"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "species['Con'].Likelihood((145, 14))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "class Classifier(Suite):\n",
    "    \n",
    "    def Likelihood(self, data, hypo):\n",
    "        return hypo.Likelihood(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Hep 0.333333333333\n",
      "Hei 0.333333333333\n",
      "Con 0.333333333333\n"
     ]
    }
   ],
   "source": [
    "suite = Classifier(species.values())\n",
    "suite.Print()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Hep 0.00116844449591\n",
      "Hei 0.000689941368376\n",
      "Con 0.998141614136\n"
     ]
    }
   ],
   "source": [
    "suite.Update((145, 14))\n",
    "suite.Print()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
